Как перебирать каждый файл в каталоге с файлом .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/…