Хорошо, я думаю, у вас есть куча файлов, таких как
ant.mov
bug.mov
cat.mov
dog.mov
︙
в каталоге (он же папка), и вы хотите сделать
HandBrakeCLI.exe (blah blah blah) -i ant.MOV -o ant.mp4
HandBrakeCLI.exe … … -i bug.MOV -o bug.mp4
HandBrakeCLI.exe … … -i cat.MOV -o cat.mp4
HandBrakeCLI.exe … … -i dog.MOV -o dog.mp4
︙
для всех файлов *.mov
.
Это довольно просто:
for %F in (*.mov) do HandBrakeCLI.exe (blah blah blah) -i "%F" -o "%~nF.mp4"
Оператор for %F in (*.mov)
запускает цикл, в котором %F
принимает каждое применимое имя *.mov
.
Затем команда, следующая за do
, выполняется для каждого файла, причем %F
очевидно, заменяется именем файла .mov
.
(Примечание: F
чувствительна к регистру.)
(Вы можете обойтись без кавычек - например, просто %F
, а не "%F"
- но тогда произойдет сбой, если у вас есть какие-либо имена файлов с пробелом (ами) или другие специальные символы в них.)
%~nF
заменяются п Ame части файла (не включая расширение), так что %~nF.mp4
станет вашим именем выходного файла.
Возможно, вы захотите разбить это на несколько строк, потому что ваша фактическая команда слишком длинная и / или потому что вы хотите делать другие вещи в цикле.
Вы можете сделать это с помощью скобок:
for %F in (*.mov) do (
HandBrakeCLI.exe (blah blah blah) -i "%F" -o "%~nF.mp4"
(other command(s) featuring "%F", "%~nF", etc.)
)
Тип for /?
чтобы увидеть список всех ~
кодов.
(Например, %~dF
дает вам букву диска, а %~pF
дает вам путь.
В документации не ясно о том, что вы можете комбинировать модификаторы; например, %~dpnF
дает вам диск, путь и имя, но не расширение - как если бы вы набрали %~dF%~pF%~nF
.)
Вы также можете разбить длинные команды на несколько строк с помощью ^
:
for %F in (*.mov) do (
HandBrakeCLI.exe --preset-import-file "preset-name.json" ^
-Z "preset-name" -i "%F" -o "%~nF.mp4"
(other command(s) featuring "%F", "%~nF", etc.)
)
Все вышеперечисленное работает в командной строке (командной строке).
То же самое работает в пакетном скрипте, за исключением того, что вы должны заменить каждый %
на %%
:
for %%F in (*.mov) do (
HandBrakeCLI.exe --preset-import-file "preset-name.json" ^
-Z "preset-name" -i "%%F" -o "%%~nF.mp4"
(other command(s) featuring "%%F", "%%~nF", etc.)
)
Это проверено на Windows 7, но я был бы очень удивлен, если бы это не работало на Windows 10.