Как перебирать каждый файл в каталоге с файлом .bat или .cmd?
Для простоты, пожалуйста, предоставьте ответ, который просто повторяет имя файла или путь к файлу.
Использование командной строки:
for /f %f in ('dir /b c:\') do echo %f
Пакетное использование файла:
for /f %%f in ('dir /b c:\') do echo %%f
Обновление : если каталог содержит файлы с пробелами в именах, вам необходимо изменить разделитель, используемый for /f
командой. например, вы можете использовать трубу char.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Обновление 2 : (быстро, через полтора года после первоначального ответа :-)) Если в имени каталога есть пробел, вы можете использовать usebackq
опцию в for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
И если вам нужно использовать перенаправление вывода или командный конвейер, используйте escape char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
нужно послеfor
? Согласно справочной документации,/f
флаг открывается и читает каждый файл. Это необходимо для эха или переименования файлов?/f
ПослеFOR
ограничивает его файлы. Аналогично,/d
ограничивается каталогами (папками) и/r
инструктирует его быть рекурсивным.'dir /b "c:\program files"'
этого должно быть`dir /b "c:\program files"`
В качестве альтернативы используйте:
Команда forfiles доступна в Windows Vista и выше.
источник
Самый простой способ:
Из командной строки используйте:
Из пакетного файла (удвойте знаки процента%):
Из пакетного файла с папкой, указанной в качестве 1-го параметра:
источник
dir /B
результатаfor
.использование
с участием:
источник
%%var was unexpected at this time.
Можете ли вы привести точный пример? Я попробовал кучу вариацийfor /r . %%var in (*.*) do echo %%var
По-другому:
источник
"%~nf"
означает имя файла без расширения, гдеf
имя переменной, указанной вfor
части. Документы: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…У меня было несколько вредоносных программ, которые помечали все файлы в каталоге как скрытые / system / readonly. Если кто-то еще окажется в этой ситуации, перейдите в каталог и запустите
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.источник