MediaInfo: Parameter in Batch übergeben
Hallo
Die Batchdatei sieht so aus
@echo off
REM Verzeichnisbaum über 2 Ebenen tief auslesen.
REM Der Name der Verzeichnisse auf der 2. Ebene sind Staffel 1 Staffel 2 bis maximal Staffel 12
REM Auf der 2. Ebene die vorhandenen Dateien vom Typ MKV und AVI mit dem dem Tool MediaInfo auswerten
for /r %%a in (*.avi) do (
rem Name der Dateien mit der Suffix .MKV / .AVI anzeigen
echo "%%a"
\mediainfo --Inform="Video;Auflösung=%Width%x%Height%\nCodec=%CodecID%\nTonformat=%Format%\nKommerzname=%Commercial Name%" --LogFile=batch.log "%%a"
pause
)
Das Tool liefert jedoch keine Info zu der Mediendatei, welche über den Parameter %%a angegeben wurde.
Wie man auf dem Screenshot sieht, funktioniert es über die CLI. Mit und ohne Pfadangabe. Nur im Batch werden keine Infos geliefert. Die Datei "Batch.log" enthält auch keine Daten. Dasselbe wie auf dem Screenshot. Den Parameter "--LogFile=batch.log" habe ist testhalber wegfallen lassen. Noch immer keine Daten über die AVI Datei angezeigt.
Wo ist der Fehler?
Grüsse
Peter
Die Batchdatei sieht so aus
@echo off
REM Verzeichnisbaum über 2 Ebenen tief auslesen.
REM Der Name der Verzeichnisse auf der 2. Ebene sind Staffel 1 Staffel 2 bis maximal Staffel 12
REM Auf der 2. Ebene die vorhandenen Dateien vom Typ MKV und AVI mit dem dem Tool MediaInfo auswerten
for /r %%a in (*.avi) do (
rem Name der Dateien mit der Suffix .MKV / .AVI anzeigen
echo "%%a"
\mediainfo --Inform="Video;Auflösung=%Width%x%Height%\nCodec=%CodecID%\nTonformat=%Format%\nKommerzname=%Commercial Name%" --LogFile=batch.log "%%a"
pause
)
Das Tool liefert jedoch keine Info zu der Mediendatei, welche über den Parameter %%a angegeben wurde.
Wie man auf dem Screenshot sieht, funktioniert es über die CLI. Mit und ohne Pfadangabe. Nur im Batch werden keine Infos geliefert. Die Datei "Batch.log" enthält auch keine Daten. Dasselbe wie auf dem Screenshot. Den Parameter "--LogFile=batch.log" habe ist testhalber wegfallen lassen. Noch immer keine Daten über die AVI Datei angezeigt.
Wo ist der Fehler?
Grüsse
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 481850
Url: https://administrator.de/forum/mediainfo-parameter-in-batch-uebergeben-481850.html
Ausgedruckt am: 02.04.2025 um 04:04 Uhr
9 Kommentare
Neuester Kommentar
A: Die Zeichencodierung ist die Fehlerquelle in jedem Batchscript. Ausschließen kannst du das das nur wenn dein Code ausschließlich ASCII enthält. Bei Umlauten ist Schluss mit lustig. Da dein Code das Wort "Auflösung" mit einem "ö" enthält, muss dein Code zwangsläufig in der Codepage vorliegen, die der Commandozeileninterpreter erwartet. Das geht entweder indem du das Script in der entsprechenden OEM Codepage speicherst, oder den Interpreter mittels CHCP mit der Codepage konfigurierst in der das Script gespeichert wurde.
B: Der Dateiname hat damit überhaupt nichts zu tun. Mit den Variablen einer einfachen FOR oder einer FOR /R Schleife kannst du sogar Chinesische Dateinamen weiterleiten. Die CMD arbeitet intern mit den UTF-16 API Funktionen. Nur ausgeben wird nichts, da das Konsolefenster nur maximal UCS-2-fähig ist. Aus einem Script heraus ist aber nicht mal das möglich.
C: Dann musst du dir die Kommandozeilensyntax des Tools noch mal genau ansehen, wenn dort das Problem liegt.
Steffen
B: Der Dateiname hat damit überhaupt nichts zu tun. Mit den Variablen einer einfachen FOR oder einer FOR /R Schleife kannst du sogar Chinesische Dateinamen weiterleiten. Die CMD arbeitet intern mit den UTF-16 API Funktionen. Nur ausgeben wird nichts, da das Konsolefenster nur maximal UCS-2-fähig ist. Aus einem Script heraus ist aber nicht mal das möglich.
C: Dann musst du dir die Kommandozeilensyntax des Tools noch mal genau ansehen, wenn dort das Problem liegt.
Last but not lest - warum nicht selber testen?
Nimm's mir nicht übel - weder kann ich mit diesem Tool irgend etwas anfangen, noch hätte ich eine Videodatei mit der ich testen kann. Wenn überhaupt, dann streame ich Videos statt mir die Festplatte zu vermüllen.Steffen
Kann doch alles niemand wissen wenn du die Informationen nicht gibst. Eine Kommandozeilenreferenz hast du auch nicht verlinkt, also bin ich auf die Suche gegangen.
https://fossies.org/linux/MediaInfo_CLI/MediaInfo/Contrib/CLI_Help.doc
Entspricht nicht 1:1 deinem Code, ich weiß. Aber was klar wird ist, dass die Prozentzeichen als Literale erwartet werden. Das bedeutet dass sie in einem Batchscript verdoppelt werden müssen, wie im Beispiel gezeigt. Anderenfalls versucht der Kommandozeileninterpreter bereits beim Parsen des Codes so etwas wie %Width% zu einem Wert aufzulösen.
Steffen
https://fossies.org/linux/MediaInfo_CLI/MediaInfo/Contrib/CLI_Help.doc
Batch Processing Example
If a file C:\video\USA Holiday.mpg contains AC-3 audio, then this may be determined and used in the following C:\conversion.bat called using:
C:\conversion.bat C:\video\USA Holiday.mpg
---conversion.bat--------------------------------------------------
@echo off
: Get the codec
C:\Programs\mediainfo_cli\mediainfo.exe --Inform=Audio;%%Codec%% %1 > C:\value.txt
: Read it
for /f "tokens=*" %%A in ('type C:\miresult.txt') do set myVar=%%A
: Test for AC-3
if ".%myvar%" == ".AC-3" goto :AC3
: non-AC-3 processing follows
ffmpeg.....
goto :exit
:AC3
: AC-3 processing follows
ffmpeg....
:exit
---------------------------------------------------------------------
Steffen