Windows-Shell, Scripte und Leerzeichen im Dateinamen
Verfasst: Mo 16. Aug 2010, 11:08
Hallo zusammen,
ich muss eine Reihe von MPEG2-Videos einer kleinen Nachbearbeitung unterziehen. Da mit allen das gleiche passieren soll, heißt dies, ein Batch mit ein paar Kommandozeilentools wie ffmpeg sollte gute Dienste tun. Die entsprechenden Batches waren für einen alten DOSler auch schnell geschrieben, aber jetzt kommt die schöne neue Windows-Welt, vielleicht hat ja einer eine Idee, wie man mit dem Problem fertig wird.
Die erste Batch nach dem Motto "bearbeite alles" war ja noch schnell geschrieben:
for %%a in (*.mpg) do vid-redo.bat %%a
Und hier mal die erste Zeile aus der vid-redo.bat, das demuxen mit ffmpeg
c:\vidtools\ffmpeg -i "%1" -vcodec copy -f mpeg2video "temp\%1.m2v" -acodec copy -f mp2 "temp\%1.mp2"
Genauso wie die letzte Zeile das Muxen
c:\normtest\ffmpeg -i "temp\%1.m2v" -i "temp\%1norm.mp2" -acodec copy -vcodec copy -f mpeg "output\%1"
Da ich das Original nicht überschreiben will, Quelle und Ziel aber den gleichen Namen haben sollen, muss ich mit Unterverzeichnissen arbeiten. Und hier fängt das Problem an.
Bei einer Datei, sei der Name noch so lang, ohne Leerzeichen, klappt alles. Da lauten die Dateinamen (bzw. die übergebenen Parameter, die Anführungszeichen gehören dazu) dann z.B.
"temp\ich_bin_ein_film.mpgnorm.mp2" oder "output\ich_bin_ein_film.mpg"
Sind Leerzeichen im Dateinamen, muss der händische Aufruf mit Anführungszeichen erfolgen, die For-Schleife macht ebenfalls automatisch Anführungszeichen. Dann heißen die Dateinamen
"temp\"ich_bin_ein_film.mpg"norm.mp2" oder "output\"ich_bin_ein_film.mpg""
Das klappt natürlich nicht.
Hat jemand eine Idee, wie man das gut automatisieren könnte?
Gruß
Volker
ich muss eine Reihe von MPEG2-Videos einer kleinen Nachbearbeitung unterziehen. Da mit allen das gleiche passieren soll, heißt dies, ein Batch mit ein paar Kommandozeilentools wie ffmpeg sollte gute Dienste tun. Die entsprechenden Batches waren für einen alten DOSler auch schnell geschrieben, aber jetzt kommt die schöne neue Windows-Welt, vielleicht hat ja einer eine Idee, wie man mit dem Problem fertig wird.
Die erste Batch nach dem Motto "bearbeite alles" war ja noch schnell geschrieben:
for %%a in (*.mpg) do vid-redo.bat %%a
Und hier mal die erste Zeile aus der vid-redo.bat, das demuxen mit ffmpeg
c:\vidtools\ffmpeg -i "%1" -vcodec copy -f mpeg2video "temp\%1.m2v" -acodec copy -f mp2 "temp\%1.mp2"
Genauso wie die letzte Zeile das Muxen
c:\normtest\ffmpeg -i "temp\%1.m2v" -i "temp\%1norm.mp2" -acodec copy -vcodec copy -f mpeg "output\%1"
Da ich das Original nicht überschreiben will, Quelle und Ziel aber den gleichen Namen haben sollen, muss ich mit Unterverzeichnissen arbeiten. Und hier fängt das Problem an.
Bei einer Datei, sei der Name noch so lang, ohne Leerzeichen, klappt alles. Da lauten die Dateinamen (bzw. die übergebenen Parameter, die Anführungszeichen gehören dazu) dann z.B.
"temp\ich_bin_ein_film.mpgnorm.mp2" oder "output\ich_bin_ein_film.mpg"
Sind Leerzeichen im Dateinamen, muss der händische Aufruf mit Anführungszeichen erfolgen, die For-Schleife macht ebenfalls automatisch Anführungszeichen. Dann heißen die Dateinamen
"temp\"ich_bin_ein_film.mpg"norm.mp2" oder "output\"ich_bin_ein_film.mpg""
Das klappt natürlich nicht.
Hat jemand eine Idee, wie man das gut automatisieren könnte?
Gruß
Volker