![No se puede llamar a ffmpeg en un archivo por lotes](https://rvso.com/image/1648629/No%20se%20puede%20llamar%20a%20ffmpeg%20en%20un%20archivo%20por%20lotes.png)
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
FOR
comando en la línea de comando en lugar de en un programa por lotes, use solo el signo de uno por ciento:%G
en 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....