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
*.mkv
und*.mp4
rekursiv gefundenen Objekten aus:
- Führen Sie es
mkvmerge
für jede Datei und die entsprechende aus*.srt
.- 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 diemkvmerge
Programm 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.