Нет абсолютно никакой необходимости в для-l oop для этой задачи.
@Dir /B /S /A -D -S -L *keyword_1* *keyword_2* *keyword_3* *keyword_n* > results.txt
или при необходимости используйте двойные кавычки:
@Dir /B /S /A -D -S -L "*keyword_1*" "*keyword_2*" "*keyword_3*" "*keyword_n*" > "results.txt"
Я использовал дополнительные фильтры только для выбора файлов, в отличие от файлов и каталогов, а также для исключения файлов с системным атрибутом и теми, которые являются ссылками junctions / mount points / symboli c. Чтобы узнать больше об этих параметрах, откройте окно командной строки, введите dir /?
, нажмите клавишу ENTER и прочитайте представленную информацию.
Учитывая предоставленный вами пример,
, который, без сомнения, не отражает вашу реальную задачу , я полагаю, вы могли бы даже использовать:
@Dir /B /S /A -D -S -L "*keyword_*" > "results.txt"
Кстати, даже если вы намеревались использовать For
l oop, вы все равно сведете его к минимуму:
@(For %%I In (1 2 3 n) Do @Dir /B /S /A -D -S -L "*keyword_%%I*") > "results.txt"
Если бы вы предоставили более реалистичный c пример ваших поисковых строк, мы могли бы предоставить более сфокусированное решение.