Как перебирать каждый файл в каталоге с файлом .bat или .cmd?
Для простоты, пожалуйста, предоставьте ответ, который просто повторяет имя файла или путь к файлу.
Как перебирать каждый файл в каталоге с файлом .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 /s /m *.png /c "cmd /c echo @path"
Команда forfiles доступна в Windows Vista и выше.
Самый простой способ:
Из командной строки используйте:
for %f in (*.*) do echo %f
Из пакетного файла (удвойте знаки процента%):
for %%f in (*.*) do echo %%f
Из пакетного файла с папкой, указанной в качестве 1-го параметра:
for %%f in (%1\*.*) do echo %%f
dir /B
результата for
.
использование
for /r path %%var in (*.*) do some_command %%var
с участием:
%%var was unexpected at this time.
Можете ли вы привести точный пример? Я попробовал кучу вариацийfor /r . %%var in (*.*) do echo %%var
По-другому:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
означает имя файла без расширения, где f
имя переменной, указанной в for
части. Документы: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…