So verwenden Sie diese Befehlszeile in Ubuntu

So verwenden Sie diese Befehlszeile in Ubuntu

Ich stelle meine Frage in Form eines Beispiels ... Ich habe einen Ordner mit mehreren Unterordnern, die wie folgt lauten: Hauptordner ==) Got, Vikings usw. In jedem davon befinden sich Videos mit den entsprechenden SRT-Dateien. Wenn Sie in der Windows-Umgebung diesen Befehl im Hauptordner ausführen, wird mkvmerge veranlasst, ganze Videos und die entsprechenden SRT-Dateien in diesem Verzeichnis zu muxen.

For /R %%A IN (*.mkv *.mp4) Do (
    "C:/Program Files/MKVToolNix\mkvmerge.exe" -o "%%~dpnxAtemp" "%%~fA" "%%~dpnA.srt" && if errorlevel 2 (
        echo errors generated during remuxing, original file not deleted
    ) else if errorlevel 1 (
        del /f "%%~fA" "%%~dpnA.srt" echo Warnings generated during remuxing to "%%~A", original file deleted
    ) else (
        del /f "%%~fA" "%%~dpnA.srt" echo Successfully remuxed to "%%~A", original file deleted
    ) && for /R %%A IN (*.mkvtemp *.mp4temp) do ren "%%~fA" "%**.mkv"
)
Pause

Antwort1

Der Code enthält einige Fehler, aber ich verstehe ihn folgendermaßen: 1

Führen Sie das Folgende auf allen *.mkvund *.mp4rekursiv gefundenen Objekten aus:

  1. Führen Sie es mkvmergefür jede Datei und die entsprechende aus *.srt.
  2. Bei Erfolg (Warnung oder sauberes Beenden):
    • Löschen Sie die Eingabedateien.
    • Benennen Sie die erstellte Datei um in <original_name>.mkv.

Dies könnte mit dem folgenden Skript unter Ubuntu erfolgen.
Verwenden Sie es auf eigenes Risiko, ich habe es nicht vollständig getestet!

#!/bin/bash
find . -name \*.mp4 -o -name \*.mkv | while read orig_filename
do
   filename="${orig_filename::-4}"  # crop the extension
   mkvmerge -o "$orig_filename.tmp" "$orig_filename" "$filename.srt"
   if [ $? -le 1 ]  # warning or clean exit
   then
       rm "$orig_filename" "$filename.srt"
       mv "$orig_filename.tmp" "$filename.mkv"
   fi
done

Bevor Sie dieses Skript ausführen, müssen Sie diemkvmergeProgramm für Ubuntu:

sudo apt install mkvtoolnix

1 Fehlermeldungen habe ich der Einfachheit halber weggelassen. Den Kommentaren zufolge scheinen sie für das Skript nicht unbedingt erforderlich zu sein.

verwandte Informationen