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

StackOverflow https://stackoverflow.com/questions/180741

Вопрос

Как вы выполняете итерацию по каждому файлу в каталоге с помощью файла .bat или .cmd?

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

Это было полезно?

Решение

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

for /f %f in ('dir /b c:\') do echo %f

Использование пакетного файла:

for /f %%f in ('dir /b c:\') do echo %%f

Обновление : если каталог содержит файлы с пробелами в именах, необходимо изменить разделитель, используемый командой for / f . например, вы можете использовать символ трубы.

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f

Обновление 2 : (быстро, через полтора года после первоначального ответа :-)) Если в имени каталога есть пробел, вы можете использовать usebackq в для :

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

Другие советы

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

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

Команда forfiles доступна в Windows Vista и более поздних версиях.

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

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

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

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

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

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

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

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

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

с:

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

Другой способ:

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

У меня было несколько вредоносных программ, которые помечали все файлы в каталоге как скрытые / system / readonly. Если кто-то еще окажется в этой ситуации, перейдите в каталог и запустите для / f " delims = | " % f в ('forfiles') делает атрибут -s -h -r% f .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top