Die Bat-Datei schlägt fehl, wenn der Dateiname Leerzeichen enthält

1

Ich habe diese Batch-Datei, die einige Videodateien in einem Stapel verarbeitet. Die Dinge funktionieren einwandfrei, solange der Dateiname keine Leerzeichen enthält. Wenn der Dateiname (test movie.avi) ein Leerzeichen enthält, heißt es

Test: Keine solche Datei oder Verzeichnis

Es scheint also, als würde der Raum als Trennzeichen behandelt. Wie komme ich um dieses Problem herum?

for %%a in (%1\*.avi) do (
   ffmpeg -i %%a -c:v libx264 -movflags +faststart -preset slow -crf 22 -b:v 500k -vf "scale=480:trunc(ow/a/2)*2" -threads 0 -c:a libfdk_aac -b:a 128k "%2/%%~na.mp4" -vf select="not(mod(n\,10))"
)

So nenne ich das:

Process.bat C:\FFMPEG\inputfiles C:\FFMPEG\outputfiles
kheya
quelle
Ich habe die Lösung gefunden!
kheya
2
Sie sollten Ihre Lösung als Antwort posten, um zukünftigen Besuchern der Site zu helfen, die möglicherweise das gleiche Problem haben.
Senshin
1
Ich habe nie verstanden, warum die Leute erwähnen, dass sie eine Lösung gefunden haben, aber nicht wirklich die Lösung anbieten.
Logan
1
-1 Wie Sie wissen, hat dies nichts mit ffmpeg zu tun. Jedes Programm schlägt fehl, wenn eine Datei Leerzeichen und keine Anführungszeichen enthält. Notepad versuchen abc .txt wird diese Datei nicht öffnen. Diese Frage ist für niemanden von Nutzen. Das Fmpeg im Titel ist irrelevant. Sie haben keine Fehlerbehebung durchgeführt.
Barlop
Ich habe beschlossen, die -1 beizubehalten, die ich dir gegeben habe (auch nachdem jemand den Titel für dich bearbeitet hat), diesmal, weil du dich nicht darum gekümmert hast, nachzuschlagen, wie Leerzeichen in einem Dateinamen erhalten bleiben. Es ist scherzhaft einfach, das nachzuschlagen.
Barlop

Antworten:

3

Sie benötigen einige Anführungszeichen um Ihr %% a beim Aufruf von ffmpeg.

~ Edit: Modifiziertes Skript hinzugefügt

for %%a in (%1\*.avi) do (
   ffmpeg -i "%%a" -c:v libx264 -movflags +faststart -preset slow -crf 22 -b:v 500k -vf "scale=480:trunc(ow/a/2)*2" -threads 0 -c:a libfdk_aac -b:a 128k "%2/%%~na.mp4" -vf select="not(mod(n\,10))"
)
KJ4IPS
quelle