it-swarm.com.ru

Как сделать что-то для каждого файла в каталоге с помощью пакетного скрипта

Как вы перебираете каждый файл в каталоге с файлом .bat или .cmd?

Для простоты, пожалуйста, предоставьте ответ, который просто повторяет имя файла или путь к файлу.

246
Brian R. Bondy

Использование командной строки:

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-код (^):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i Microsoft`) do echo %%f
325
Franci Penov

В качестве альтернативы используйте:

forfiles /s /m *.png /c "cmd /c echo @path"

Команда forfiles доступна в Windows Vista и выше.

94
Paul Houx

Самый простой способ:

Из командной строки используйте:

for %f in (*.*) do echo %f

Из пакетного файла (удвойте знаки процента%):

for %%f in (*.*) do echo %%f

Из пакетного файла с папкой, указанной в качестве 1-го параметра:

for %%f in (%1\*.*) do echo %%f
57
Gordon Bell

Использование

for /r path %%var in (*.*) do some_command %%var

с:

  • путь является начальным путем.
  • %% var - это некоторый идентификатор.
  • *. * является файловой маской OR содержимым переменной.
  • some_command - команда для выполнения с путем и var, объединенными в качестве параметров.
33
mstrobl

По-другому:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
6
thistleknot