Handbrems-Batch-Konvertierung mit CLI-Unterstützung

2693
JK81

Die Verwendung des GUI-Tools stürzt IMMER für mich ab, daher habe ich einen Befehl zum Konvertieren meiner Dateien in meine Bedürfnisse erhalten. Es erfordert eine Voreinstellung, die ich in der GUI erstellt habe, und konvertiert die Datei.

Ich habe viele Videos, die ich konvertieren muss, und möchte wissen, ob es möglich ist, die Stapelverarbeitung mit einer Art Skript durchzuführen, das alle .MOV-Videos in einem Ordner liest und sie mit dem von mir bereitgestellten Befehl in .mp4 konvertiert.

Ich verwende Windows 10.

Hier ist mein Befehl, ich verwende nächtliche Builds:

HandBrakeCLI.exe --preset-import-file "preset-name.json" -Z "preset-name" -i video.MOV -o video.mp4 

Mit klarer Anfrage bearbeitet.

0
(1) Da Sie sagen, dass Sie "batch" und ".exe" sagen, denken Sie, dass Sie über Windows sprechen, aber es ist gut, dies ausdrücklich zu sagen. (2) Seien Sie auch genauer, was Sie brauchen. Sie zeigen einen Befehl. Was brauchst du zum Batch? Bitte antworten Sie nicht in Kommentaren. [edit] deine Frage klarer und vollständiger. Scott vor 6 Jahren 0
Aktualisiert .... Bumping JK81 vor 6 Jahren 0
Einfach einchecken ..... JK81 vor 6 Jahren 0

2 Antworten auf die Frage

0
Scott

OK, ich denke, Sie haben eine Reihe von Dateien wie

ant.mov bug.mov cat.mov dog.mov ︙ 

in einem Verzeichnis (aka Ordner) und Sie möchten dies tun

HandbrakeCLI.exe ( bla bla bla ) -i ant.MOV -o ant.mp4 HandBrakeCLI.exe…… -i bug.MOV -o bug.mp4 HandbrakeCLI.exe…… -i cat.MOV -o cat.mp4 HandbrakeCLI.exe…… -i dog.MOV -o dog.mp4 ︙

für alle *.movDateien. Das ist ziemlich einfach:

für% F in (* .mov) HandBrakeCLI.exe ( bla bla bla bla ) -i "% F" -o "% ~ nF.mp4"

Das for %F in (*.mov)führt eine Schleife aus, in der %Fjeder anwendbare *.movName übernommen wird. Dann dowird für jede Datei der Befehl ausgeführt, der %Foffensichtlich durch den .movDateinamen ersetzt wird . (Hinweis: FGroß- und Kleinschreibung wird berücksichtigt.) (Sie können möglicherweise ohne Anführungszeichen auskommen - dh, sagen Sie einfach %F und nicht "%F"-), aber es schlägt fehl, wenn Sie Dateinamen mit Leerzeichen oder anderen Sonderzeichen enthalten .) %~nFwird durch die ersetzt n AME Teil des Dateinamens (nicht einschließlich der Erweiterung), so %~nF.mp4wird die Ausgabe Dateinamen.

Möglicherweise möchten Sie dies in mehrere Zeilen unterteilen, weil Ihr eigentlicher Befehl so lang ist und / oder weil Sie andere Dinge in der Schleife ausführen möchten. Sie können dies mit Klammern tun:

für% F in (* .mov) do ( HandBrakeCLI.exe (bla bla bla) -i "% F" -o "% ~ nF.mp4" (anderer Befehl (e) mit "% F", "% ~ nF", etc.) )

Geben Sie ein for /?, um eine Liste aller ~Codes anzuzeigen. (Beispiel: %~dFGibt den Laufwerksbuchstaben an und %~pFgibt den Pfad an.) In der Dokumentation ist nicht klar, dass Sie die Modifikatoren kombinieren können, z. B. %~dpnFLaufwerk, Pfad und Namen, nicht jedoch die Erweiterung. als ob Sie getippt hätten %~dF%~pF%~nF.)

Sie können lange Befehle auch in mehrere Zeilen aufteilen ^:

für% F in (* .mov) do ( HandBrakeCLI.exe --preset-import-Datei "Voreinstellungsname.json" ^ -Z "Preset-Name" -i "% F" -o "% ~ nF.mp4" (andere Befehle mit "% F", "% ~ nF" usw.) )

Alle oben genannten Funktionen funktionieren an der Eingabeaufforderung (Befehlszeile). Dasselbe funktioniert in einem Batch-Skript, außer dass Sie jedes %durch Folgendes ersetzen müssen %%:

für %% F in (* .mov) do ( HandBrakeCLI.exe --preset-import-Datei "Voreinstellungsname.json" ^ -Z "Preset-Name" -i "%% F" -o "%% ~ nF.mp4" (andere Befehle mit "%% F", "%% ~ nF" usw.) )

Dies wurde unter Windows 7 getestet, aber ich wäre sehr überrascht, wenn es nicht unter Windows 10 funktioniert.

0
Timbuckto

Ich möchte etwas hinzufügen, falls Sie denselben Dateityp aus einer rohen mkv-Datei (MakeMKV-RIP) in eine komprimierte mkv-Datei konvertieren. Mit dem obigen Code können Sie eine Datei anzeigen und dann in eine andere konvertieren. Der andere Code, den ich gefunden habe, war ähnlich und kopiere ihn von seiner Website:

FOR /F "tokens=*" %%G IN ('DIR /B /S *.avi') DO "C:\Program Files\Handbrake\HandBrakeCLI" -i "%%G" -o "%%G".mp4 --preset="iPad" 

Dies half jedoch nicht beim Konvertieren von .mkv -> .mkv. Ich habe durch Ausprobieren herausgefunden, dass Sie /Sden Befehl im Verzeichnis entfernen müssen, damit nur der Dateiname und nicht der gesamte Pfad aufgezeichnet wird %%G.

Hier ist der Code, den ich verwende, um ein Benutzerprofil zu ziehen und die Kodierung auch in einen anderen Ordner zu senden:

FOR /F "tokens=*" %%G IN ('DIR /B *.mkv') DO "C:\Program Files\Handbrake\HandBrakeCLI" --preset-import-gui -Z "name of user preset" -i "%%G" -o "D:\Users\jeff\Videos\Path\To\File\%%G" pause 

Dinge zu beachten:

  1. Der Name des Presets ist abhängig von der Groß- und Kleinschreibung, unabhängig davon, ob es sich um Ihren eigenen oder einen eingebauten handelt.
  2. Wenn Sie ein eingebautes Preset verwenden, brauchen Sie --preset-import-guiden Code nicht
  3. Stellen Sie sicher, dass die Variable Anführungszeichen nach der hat -iso wie -i "%%G". Dies ermöglicht, wie bereits erwähnt, die Verwendung von Dateien mit Leerzeichen im Namen ohne Fehler.

Kopieren Sie den benötigten Code in eine Textdatei und speichern Sie die Datei als BAT-Datei im Verzeichnis der Filme, die Sie konvertieren möchten.

Ich hoffe, das hilft Ihnen, Zeit zu sparen, wenn Sie viele Dateien gleichzeitig mit unterschiedlichen Namen konvertieren.