
Ich kodiere viele Videodateien mit ffmpeg neu, indem ich in der Eingabeaufforderung den folgenden Befehl verwende:
for %F in ("..\*.*") DO ffmpeg -n -i "%F" -c:v libx265 -c:a copy "%~nF.mkv"
Ich habe eine Batchdatei mit diesem Befehl erstellt und sie in meinen Profilpfad eingefügt. Aber wenn ich sie ausführe, erhalte ich Folgendes:
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"
Vielleicht ein Problem mit Anführungszeichen?
Antwort1
Vielleicht ein Problem mit Anführungszeichen?
Nein, das ist ein Problem mit %
. Verwenden Sie in der Befehlszeile ein einzelnes %
. In einer Batchdatei verdoppeln Sie es %%
.
Verwenden Sie daher Folgendes:
for %%F in ("..\*.*") DO ffmpeg -n -i "%%F" -c:v libx265 -c:a copy "%%~nF.mkv"
FOR
Wenn Sie den Befehl in der Befehlszeile und nicht in einem Batchprogramm verwenden , verwenden Sie nur ein Prozentzeichen:%G
anstelle von%%G
.
Quelle:For - Schleifenbefehle - Windows CMD - SS64.com
Weitere Informationen
Antwort2
Genau, Sie müssen doppelte Prozentzeichen statt einzelner verwenden. Stellen Sie außerdem sicher, dass der ffmpeg-Pfad in der Variable %path% enthalten ist, da Sie sonst den gesamten Pfad zum ffmpeg-Programm angeben müssen....