[win] batch multiple Files drag drop

Ein typisches Problem. Mehrere Files selektiert, die zB per ffmpeg umgewandelt werden sollen. Hier mein Beispiel (ffmpeg, audio-Datei nach mp3 48khz 192kb), wie man das umsetzt:

:LOOP
if "%~1" == "" goto :END
"C:\Program Files\ffmpeg\ffmpeg.exe" -i %1 -ar 48000 -ac 2 -b:a 192k %1.mp3
shift
goto :LOOP
:END
pause

Diesen Code in einer IrgendwieHeisseIch.bat speichern, die Endung ist wichtig, dann die selektierten Dateien darauf abwerfen. Die Besonderheit liegt hier im „Loop“ und im „shift“. Der Loop soll solange ausgeführt werden, bis keine Arguments (%1 %2 %3 etc pp) mehr abzuarbeiten sind. Und der Befehl „shift“ entfernt das erste Argument in der Liste, so, dass das zweite zum ersten wird. Den Begriff kennt man zB auch aus Javascript, wo das erste Feld eines Array entfernt wird. Am Ende noch ein „pause“, damit das Fenster nicht sofort wieder verschwindet.

Bemerkung: Die Argumentliste darf nicht beliebig lang sein, 8K Chars seit Win7 glaube ich. Sprich, wenn es nicht funktionieren will, einfach mal weniger Dateien drag&drop’en.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert