Ich habe dieses Skript erstellt, aber es funktioniert nicht:
for /R %%f in (*.mkv) do (
ffmpeg -i "%%f" -vf subtitles="%%~nf.mkv" -acodec copy "%%~nf.mp4"
)
PAUSE
Nachdem ich nach dem Problem gesucht habe, habe ich festgestellt, dass das Problem der Name der Datei ist, die eckigen Klammern müssen ausgeblendet werden (zum Beispiel [1080p]coolvid.mp4
sollten \[1080p\]coolvid.mp4
. Wie kann ich das mit dem Namen der Datei machen (dh %% f)?
ffmpeg
batch
batch-file
mdrlol
quelle
quelle
Antworten:
Die eckigen Klammern müssen entfernt werden
Verwenden Sie die folgende Batchdatei:
Weitere Lektüre
ffmpeg
.BEARBEITEN: Der ursprüngliche Code schlägt fehl, wenn Sie eine Datei (oder einen Dateipfad) mit dem
!
Zeichen ausführen, da die verzögerte Erweiterung aktiviert ist und die Variable FOR vor der verzögerten Erweiterung erweitert wird. Namen mit!
werden also verfälscht.Dies lässt sich leicht beheben, indem die verzögerte Erweiterung in der Schleife ein- und ausgeschaltet wird, sodass keine FOR-Variablen erweitert werden, während die verzögerte Erweiterung aktiviert ist.
quelle
%%~nf
Beschädigung von Dateinamen, die!
do enthalten , auf verzögerte Erweiterung nicht erwähnt. Dies könnte behoben werden, indem die verzögerte Expansion innerhalb der Schleife ein- und ausgeschaltet wird.ffmpeg
also konnte ich es nicht testen. Ich war mir nicht sicher, ob du die ganze Zeit entkommen musstest,[]
also habe ich den Code für beide hinzugefügt;) Ich bin froh, dass du es geschafft hast!