In einer Matroska-Datei eine Audio-Spur suchen
Hallo,
ich habe mehrere Matroska-Dateien mit jeweils einer Videospur und drei Audiospuren und ich möchte in einem Script feststellen welches jeweils die deutsche Audiospur ist.
Ich benutze dazu die CLI-Version von MediaInfo v0.7.92.1.
liefert mir :2.de::3.en::4.en:
die Doppelpunkte trennen die einzelnen Spuren
und die Punkte trennen Spur-ID und Sprache
Bisher habe ich mir folgendes Überlegt:
Wie kann ich jetzt in den drei Variablen nach dem "de" suchen und die Zahl davor in einer Variablen speichern?
ich habe mehrere Matroska-Dateien mit jeweils einer Videospur und drei Audiospuren und ich möchte in einem Script feststellen welches jeweils die deutsche Audiospur ist.
Ich benutze dazu die CLI-Version von MediaInfo v0.7.92.1.
mediainfo --Inform=Audio;:%ID%.%Language%: "input.mkv"
liefert mir :2.de::3.en::4.en:
die Doppelpunkte trennen die einzelnen Spuren
und die Punkte trennen Spur-ID und Sprache
Bisher habe ich mir folgendes Überlegt:
for %%i in ( *.mkv ) do (
for /f "tokens=1-3 delims=:" %%j in ( '"mediainfo --Inform=Audio;:%%ID%%.%%Language%%: "%%i""' ) do (
liefert mir als Output für die jeweilige Datei z.B:
in Variable j: 2.de
in Variable k: 3.en
in Variable l: 4.en
und die Punkte trennen Spur-ID und Sprache
)
)
Wie kann ich jetzt in den drei Variablen nach dem "de" suchen und die Zahl davor in einer Variablen speichern?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 332924
Url: https://administrator.de/forum/in-einer-matroska-datei-eine-audio-spur-suchen-332924.html
Ausgedruckt am: 21.04.2025 um 23:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo Spider.Mann
Eine Option statt der Doppelpunkte einen Zeilenumbruch zu schreiben gibt's nicht zufällig?
Ansonsten:
Grüße
rubberman
Eine Option statt der Doppelpunkte einen Zeilenumbruch zu schreiben gibt's nicht zufällig?
Ansonsten:
for %%i in (*.mkv) do (
for /f "tokens=1-3 delims=:" %%j in ( '"mediainfo --Inform=Audio;:%%ID%%.%%Language%%: "%%i""' ) do (
for /f "tokens=1,2 delims=." %%m in ("%%j") do if "%%n"=="de" set "id=%%m"
for /f "tokens=1,2 delims=." %%m in ("%%k") do if "%%n"=="de" set "id=%%m"
for /f "tokens=1,2 delims=." %%m in ("%%l") do if "%%n"=="de" set "id=%%m"
)
set "file=%%i"
setlocal EnableDelayedExpansion
echo !id! !file!
endlocal
)
rubberman
Der Grund für die Hilfsvariable file und dass ich die verzögerte Variablenerweiterung nur für die Ausgabe eingeschaltet habe, ist, dass Batch sonst bei Dateinamen mit Ausrufezeichen rumzickt. Falls du solche Namen ausschließen kannst, kannst du das
auch vor die äußere Schleife setzen und das
danach. Spart ein bisschen Zeit, ist aber eben auch etwas gefährlicher.
Grüße
rubberman
setlocal EnableDelayedExpansion
auch vor die äußere Schleife setzen und das
endlocal
danach. Spart ein bisschen Zeit, ist aber eben auch etwas gefährlicher.
Grüße
rubberman