Искать файлы в пакетном скрипте и обрабатывать эти файлы? - PullRequest
10 голосов
/ 19 сентября 2009

Я пытаюсь сделать некоторые вещи на этапе предварительной сборки проекта Visual Studio. В частности, я пытаюсь выполнить некоторые команды для всех файлов * .resx в проекте. Вот что у меня есть, но оно не работает, когда в пути к файлам / каталогам есть пробел. Как мне обойти эти пробелы?

for /f %%a in ('dir /B /S *.resx') do echo "%%a"

Ответы [ 6 ]

17 голосов
/ 19 сентября 2009

Вы знаете, что for также может рекурсивно работать с каталогами?

for /r %%x in (*.resx) do echo "%%x"

Гораздо проще, чем возиться с разделителями и избавляет от запуска dir.

4 голосов
/ 19 сентября 2009

Придерживайтесь для текстового парсера оболочки

for /f "delims=|" %%a in ('dir /B /S *.resx') do echo "%%a"

просто добавьте опцию разделителя (для символа разделителя, который явно не может существовать) и так далее!

В отсутствие этой опции delims / f будет делать то, что должно, то есть анализировать ввод, разбивая его на каждую последовательность пробелов или табуляций.

2 голосов
/ 19 сентября 2009

Вы сталкиваетесь с непреднамеренным использованием разделителя пробелов по умолчанию. Вы можете исправить это, сбросив разделители следующим образом:

for /f "delims=" %%a in ('dir /B /S *.resx') do echo "%%a"
2 голосов
/ 19 сентября 2009

Вы также можете установить cygwin, чтобы получить полноценную оболочку Unix-esque, которая поставляется с верной старой командой "find", плюс кучу других инструментов. Например,

find . -name "*.resx" | xargs grep MyProjectName
2 голосов
/ 19 сентября 2009

Вы можете использовать findutils для Windows - в него входят как "find", так и "xargs"

1 голос
/ 01 ноября 2013

Для создания простого списка файлов всех соответствующих файлов для последующей обработки

@echo create a results file…
if exist results.txt (del results.txt)
echo. >NUL 2>results.txt

@echo minimal recursive subdirectory search for filespec...
dir /s /a /b "*.resx" >>results.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...