Как что-то сделать с каждым файлом в каталоге с помощью пакетного скрипта
-
05-07-2019 - |
Вопрос
Как вы выполняете итерацию по каждому файлу в каталоге с помощью файла .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 опция code> в
для
:
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
.