No se puede llamar a ffmpeg en un archivo por lotes

No se puede llamar a ffmpeg en un archivo por lotes

Vuelvo a codificar muchos archivos de video con ffmpeg usando el siguiente comando cuando se me solicita:

for %F in ("..\*.*") DO ffmpeg -n -i "%F" -c:v libx265 -c:a copy "%~nF.mkv"

Creé un archivo por lotes que contiene este comando y lo puse en la ruta de mi perfil. Pero cuando lo ejecuto me sale lo siguiente:

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"

¿Quizás un problema con las comillas?

Respuesta1

¿Quizás un problema con las comillas?

No, es un problema con %. En la línea de comando use un solo archivo %. En un archivo por lotes, duplíquelo %%.

Entonces usa lo siguiente:

for %%F in ("..\*.*") DO ffmpeg -n -i "%%F" -c:v libx265 -c:a copy "%%~nF.mkv"

Si está utilizando el FORcomando en la línea de comando en lugar de en un programa por lotes, use solo el signo de uno por ciento: %Gen lugar de %%G.

Fuente:Para - Comandos en bucle - Windows CMD - SS64.com


Otras lecturas

Respuesta2

Exactamente tienes que usar signos de porcentaje doble en lugar de simples. También asegúrese de que la ruta ffmpeg esté en la variable %path% o debe especificar la ruta completa al programa ffmpeg....

información relacionada