файл.txt:
C:\Program Files\Folder\file.exe
Может быть .exe, .dll и т.д.
Выходная цель:
C:\Program Files\Folder
Код пока:
for /f "usebackq delims = " %%g in (`type file.txt ^| findstr /vc:".exe"`) do ( echo %%g )
Я не уверен, как его использовать, хотя, как это может пригодиться? Я получаю информацию об этом пути из текстового файла.
как насчет echo %%~dpg
вместо этого?
В следующем примере предполагается, что все ваши файлы в списке имеют расширение (содержащее точку, за которой следуют символы 2
, 3
или 4
). Чтобы уточнить, это означает, что он будет игнорировать любые файлы или каталоги последнего листа, которые не имеют точек или заканчиваются точкой, за которой следует 1
, 5
или более 5
символов; но подберет последние листовые каталоги, которые заканчиваются точкой, за которой следуют символы 2
, 3
или 4
:
@For /F Delims^=^ EOL^= %%G In ('%__AppDir__%findstr.exe /ER "\...$ \....$ \.....$" "file.txt" 2^> NUL')Do @For %%H In ("%%~dpG.")Do @Echo %%~dpnxH
Обратите внимание, что я использовал findstr.exe
непосредственно в приведенном выше примере. Если вы не получаете ожидаемых результатов, вероятно, ваш исходный файл file.txt
имеет кодировку Unicode. В этом случае вам следует вернуться к передаче контента из команды type
, как в исходной публикации:
@For /F Delims^=^ EOL^= %%G In ('Type "file.txt" 2^> NUL ^| %__AppDir__%findstr.exe /ER "\...$ \....$ \.....$"')Do @For %%H In ("%%~dpG.")Do @Echo %%~dpnxH
Код можно было бы сделать более надежным, если бы каждый из элементов файла или те, которые вам нужны, существовали в системе. (Но в настоящее время это выходит за рамки ваших очень ограниченных критериев вопроса).
Второй вариант сработал, большое спасибо. Кроме того, куда мне обратиться, чтобы узнать о функциях с подстановочными знаками и подстановке переменных?
Каждая встроенная команда имеет функцию справки, чаще всего доступную с помощью commandname /?
, help commandname
и commandname --help
. Информация о подстановочных знаках и заменах переменных доступна в выводе for /?
и findstr /?
. Этот сайт не дает советов по сторонним местам обучения, поэтому я советую воспользоваться встроенной справкой (как указано выше) или обратиться за дополнительной помощью на официальный сайт производителя команды или утилиты, о которой вам нужна информация.
Взгляните на справочную информацию для команды
for
,for /?
, и обратите внимание на ее модификаторы подстановки переменных.