Batch Mkvmerge Tonspur entfernen und Untertitel einfügen

Cholesterin

Cadet 1st Year
Registriert
Aug. 2017
Beiträge
10
Hallo Community,
ich würde gerne für mkvmerge zwei Batch-Befehle zusammenfügen!
Leider bekomme ich das alleine nicht hin. Es geht darum das der eine Befehl
eine Tonspur aus der MKV Datei entfernt und der andere eine Untertitel Datei hinzufügt.

Einzeln funktionieren die Befehle wunderbar, ist aber leider ein
bisschen umständlich... Ich würde den Prozess gerne in einem
Durchlauf fertig haben. Wäre es zudem möglich, dass die Ursprungsdatei
gelöscht oder ersetzt wird nach dem Bearbeitungsvorgang!

Code: Entfernt die Tonspur

Code:
SET mkvmerge="C:\Programme\MKVToolNix\mkvmerge.exe"

PUSHD %~dp1
if [%1]==[] goto :eof
mkdir remux
:loop
%mkvmerge% -o "%~dp1\remux\%~n1.mkv" -a !2 %1
shift
if not [%1]==[] goto loop

Code: Fügt den Untertitel ein... Leider nur Untertitel die im .srt Format vorliegen.
Für Datein die im .idx Format vorliegen muss ich immer den Befehl ändern
"%%~nA.idx" beide Codes gleichzeitig im Befehl macht er nicht. Wäre schön wenn es
dafür auch eine Lösung gibt.

Code:
for %%A IN (*.mkv) do (
"C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt"
echo 
)

MfG Cholesterin
 
Zuletzt bearbeitet:
die .idx ist doch lediglich die index-datei zur eigentlichen Sub. Und wenn du anstelle der ".idx" die ".sub" direkt angibst "%%~nA.sub" macht dein Code das auch nicht ohne das du den befehl jedesmal ändern musst?


mkvtoolnix hat doch die GUI, wo du den Inhalt siehst. dort kann man doch das was man nicht will entfernen oder hinzufügen und anschließend muxen. Ist das nix für dein Vorhaben oder zu umständlich?
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    93,5 KB · Aufrufe: 607
Zuletzt bearbeitet:
inge70 schrieb:
Warum machst du das per Batch?

Serien (ganze Staffeln). Mach das mal für jede Folge.


Topic: Du kannst dir bei mkvtolnix in der GUI die Kommandzeile anzeigen lassen. Mach alles einmal händisch (Tonspur entfernen, Untertitel hinzufügen) und dann nimmst du diese erstellte Befehlskette aus der Kommondazeile als Grundlage.
Vllt kann man damit etwas anfangen und anpassen.
 
ok, dann ist das verständlich. Daran dachte ich nicht.
 
inge70 schrieb:
die .idx ist doch lediglich die index-datei zur eigentlichen Sub. Und wenn du anstelle der ".idx" die ".sub" direkt angibst "%%~nA.sub" macht dein Code das auch nicht ohne das du den befehl jedesmal ändern musst?

@inge70

Nein, leider bringt das nichts, mit dem Code geht nur ein Befehl entweder .idx/.sub oder .srt

Spillunke schrieb:
Topic: Du kannst dir bei mkvtolnix in der GUI die Kommandzeile anzeigen lassen. Mach alles einmal händisch (Tonspur entfernen, Untertitel hinzufügen) und dann nimmst du diese erstellte Befehlskette aus der Kommondazeile als Grundlage.
Vllt kann man damit etwas anfangen und anpassen.

@Spillunke

Habe ich schon getan, die Kommandozeilen in MKVToolNix helfen mir da nicht weiter
 
Zuletzt bearbeitet:
Ich bin nicht sicher ob ich das Problem richtig verstanden habe, würde aber spontan sagen, dass du die Befehlszeile in der Scheife z.B. dublizieren und if-bedingt an die existierende Dateiendung knüpfen könntest.

Code:
    for %%A IN (*.mkv) do (
    if exist "%~nA.srt" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt" & del "%~1")
    if exist "%~nA.idx" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.idx" & del "%~1")
    echo 
    )

Das Löschen der Eingangsdatei sollte so auch erledigt sein. Ungetestet.
 
A d00d schrieb:
Ich bin nicht sicher ob ich das Problem richtig verstanden habe, würde aber spontan sagen, dass du die Befehlszeile in der Scheife z.B. dublizieren und if-bedingt an die existierende Dateiendung knüpfen könntest.

Code:
    for %%A IN (*.mkv) do (
    if exist "%~nA.srt" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt" & del "%~1")
    if exist "%~nA.idx" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.idx" & del "%~1")
    echo 
    )

Das Löschen der Eingangsdatei sollte so auch erledigt sein. Ungetestet.

@A d00d

Danke für die mühe, der Code funktioniert leider nicht...
Die Batch-Datei schließt sich direkt.
 
Das kann gut sein, war etwas schlampig.

Code:
for %%A IN (*.mkv) do (
  if exist "%%~nA.srt" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt" & del "%~1")
  if exist "%%~nA.idx" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.idx" & del "%~1")
  echo 
)


So sollte es aber laufen. Die fehlenden % hätten dir aber auch mal auffallen können... ;p
 
Prima, die Untertitel-Dateien lassen sich jetzt einfügen und auch die alte Mkv Datei wird gelöscht.
Schön wäre, wenn nach dem Prozess die alten Untertitel-Dateien gleich mit gelöscht werden.

Ich bin Dir echt dankbar für deine Hilfe!
Leider besteht das Problem mit der Tonspur noch, aus meinem ersten
Beitrag... Bekomme es nicht hin die beiden Befehle zusammenzufügen.

Edit: Das mit dem löschen der Untertitel habe jetzt hinbekommen :freak:
 
Zuletzt bearbeitet:
So vielleicht?

Code:
    SET mkvmerge="C:\Programme\MKVToolNix\mkvmerge.exe"
     
    PUSHD %~dp1
    if [%1]==[] goto :eof
    mkdir remux
    :loop
    %mkvmerge% -o "%~dp1\remux\%~n1.mkv" -a !2 %1
    call :Subtitle %1
    shift
    if not [%1]==[] goto loop

:Subtitle
    for %%A IN (*.mkv) do (
      if exist "%%~nA.srt" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt" & del "%~1")
      if exist "%%~nA.idx" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.idx" & del "%~1")
      echo 
    )
exit /b

So ganz optimal scheint mir das aber sowieso alle nich. Wenn es nur darum geht, dass Besagtes an der Datei die du aufs Batch ziehst abgearbeitet werden soll, sollte das auch wesentlich übersichtlicher gehen. Aber kannst obriges ja erstmal probieren. Die Subtitle-Schleife scant halt den ganzen Ordner der Eingabedatei nach mkv files und arbeitet die ab. Löschen in der Form allerdings nur die Datei, die du raufziehst. Die Obere tut das nicht, erstellt aber einen extra Ordner. Wobei mir das auch nicht alles an Code zu scheint. Ich wollte mich da jetzt allerdings auch nciht großartig reinarbeiten... nicht dass dir noch langweilig wird. ;)
 
Code:
        SET mkvmerge="C:\Programme\MKVToolNix\mkvmerge.exe"
         
        PUSHD %~dp1
        if [%1]==[] goto :eof
        mkdir neu
        :loop
        %mkvmerge% -o "%~dp1\neu\%~n1.mkv" -a !2 %1
		
        call :Subtitle %1
        shift
        if not [%1]==[] goto loop
     
    :Subtitle
        for %%A IN (*.mkv) do (     	  	  
      if exist "%%~nA.srt" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.srt" & del "%%~nA.mkv" "%%~nA.srt")
      if exist "%%~nA.idx" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.idx" & del "%%~nA.mkv" "%%~nA.idx")
      if exist "%%~nA.sub" ("C:\Programme\MKVToolNix\mkvmerge.exe" -o "remux-%%~nxA" "%%~A" "%%~nA.sub" & del "%%~nA.mkv" "%%~nA.sub")	 
          echo 
        )
    exit

@A d00d

Danke, funktioniert nicht so wirklich, es werden jedes mal zwei Dateien
angelegt... Eine ist zwar ohne die überflüssige Tonspur, aber auch ohne
Untertitel und die andere MKV-Datei hat zwar Untertitel, aber auch
die überflüssige Tonspur noch enthalten (also genau umgekehrt).

Ist aber nicht so Wild!
Die beiden Batch-Befehle laufen ja auch ganz gut getrennt von einander.
Ist halt ein bisschen umständlicher... Aber geht wohl nicht anders :)

Andererseits könnte ich mir vorstellen, dass der Befehl für den Subtitle sich die MKV-Datein
aus dem "remux" Ordner holt nach dem Sie verarbeitet bzw. die überflüssige Tonspur
entfernt und eine neue MKV-Datei angelegt wurde. So wäre alles unterm Hut, leider sehe ich da nicht durch...
 
Hallo Community,
ich komme nicht weiter... Seit ein paar Tagen versuche ich eine möglichkeit zu finden
mein Vorhaben umzusetzen, da es doch ein bisschen umständlich ist mit zwei
Batch-Dateien zu arbeiten, besonders wenn man mehrere Serien mit Staffeln im Mkv-Format
bearbeiten will! Mir schmerzen die Augen schon vor lauter Codes :freak:
Finde keine Lösung die beiden Batch-Befehle zu verbinden, so dass eine
Mkv-Datei mit Untertiteln und ohne die überflüssige Tonspur am Ende rauskommt.

Wäre für jede Hilfe dankbar, bin einfach zu dumm :heul:

Edit: Mit Hilfe und sehr viel Geduld, ist das Script jetzt fertig!

Danke an alle die geholfen haben :cool_alt:

Code:
SET mkvmerge="C:\Programme\MKVToolNix\mkvmerge.exe"
             
PUSHD %~dp1
if [%1]==[] goto :eof
:loop
if exist "%~n1.srt" ( 
%mkvmerge% -o "neu\%~n1.mkv" -a !2 %1 "%~n1.srt" && del %1 "%~n1.srt"
) else if exist "%~n1.idx" ( 
%mkvmerge% -o "neu\%~n1.mkv" -a !2 %1 "%~n1.idx" && del %1 "%~n1.idx" "%~n1.sub"
) else ( 
%mkvmerge% -o "neu\%~n1.mkv" -a !2 %1 && del %1
)
shift
if not [%1]==[] goto loop

pause
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben