
Я перекодирую множество видеофайлов с помощью ffmpeg, используя следующую команду в командной строке:
for %F in ("..\*.*") DO ffmpeg -n -i "%F" -c:v libx265 -c:a copy "%~nF.mkv"
Я создал пакетный файл, содержащий эту команду, и поместил его в свой путь профиля. Но когда я его запускаю, я получаю следующее:
M:\>ff.bat
The following usage of the path operator in batch-parameter
substitution is invalid: %~nF.mkv"
For valid formats type CALL /? or FOR /?
The syntax of the command is incorrect.
M:\>for F" -c:v libx265 -crf 28 -c:a copy "F" -c:v libx265 -crf 28 -c:a copy "%~nF.mkv"
Может быть, проблема с кавычками?
решение1
Может быть, проблема с кавычками?
Нет, это проблема с %
. В командной строке используйте один %
. В пакетном файле удвойте его %%
.
Поэтому используйте следующее:
for %%F in ("..\*.*") DO ffmpeg -n -i "%%F" -c:v libx265 -c:a copy "%%~nF.mkv"
Если вы используете
FOR
команду в командной строке, а не в пакетной программе, используйте только один знак процента:%G
вместо%%G
.
Источник:For - Циклические команды - Windows CMD - SS64.com
Дальнейшее чтение
решение2
Точно, вам нужно использовать двойные знаки процента вместо одинарных. Также убедитесь, что путь к ffmpeg находится в переменной %path%, иначе вам нужно указать полный путь к программе ffmpeg....