Я не могу найти конкретное упоминание о моей проблеме, хотя, похоже, это была бы общая проблема.Как рекурсивно прокручивать каталог по определенному типу файлов?
Я пытаюсь пропустить все пакетные файлы в каталоге, независимо от глубины.
Вот что у меня есть:
for /f "tokens=* delims=" %%a in ('dir %DIR% /s /b *.bat') do (
if not exist %%a\* echo %%a
)
Где DIR установлен заранее. Я повторяю только файлы.
Очевидно, что это неправильно, поскольку он выводит сначала все файлы, ТОГДА все пакетные файлы.
Кажется, мне нужно как-то объединить спецификатор * .bat и переменную% DIR%, но я не уверен, как это сделать.
Это сработало для меня. Мне любопытно увидеть рассуждения, стоящие за двумя ответами, - это кажется намного проще. Любые вклады по этой теме? – Rail24
@ Rail24 - Этот метод является предпочтительным, если DO не изменяет список деревьев, поскольку он работает быстрее и работает с unicode в именах файлов. Но предположим, что DO добавляет новые файлы, тогда эти вновь созданные файлы также могут быть итерированы, в зависимости от того, как они сортируются и насколько велик внутренний буфер. FOR/F с DIR/S/B/A-D требуется, если DO изменяет или добавляет файлы, поскольку он кэширует результат всего списка, прежде чем он начнет итерацию. Но FOR/F не очень хорошо работает с unicode. – dbenham