Невозможно вызвать ffmpeg в пакетном файле

Невозможно вызвать ffmpeg в пакетном файле

Я перекодирую множество видеофайлов с помощью 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....

Связанный контент