2016-10-06 6 views
2

Also ich versuche zu Setup eine einfache Möglichkeit von Ausgangsvideos mit einer Fledermaus-Datei ausgegeben und mit diesem Laufe Medieninfo zuerst die Länge des Videos zu bekommen, damit es dann vlc stoppen kann oder was auch immer, wenn es fertig ist zu spielen.von Mediainfo als Variable in einem anderen Befehl

Complete name       : C:\Users\Tyler\Desktop\Psych s05e11.mp4 
Format         : MPEG-4 
Format profile       : Base Media 
Codec ID         : isom (isom/iso2/avc1/mp41) 
File size        : 116 MiB 
Duration         : 42 min 36 s 
Overall bit rate       : 382 kb/s 
Writing application      : Lavf55.13.102 

, die aus der Ausgabe ist Mediainfo ich in einer txt-Datei bekam, ich versuche nur, um die 42 und die 36 von der Dauer Bit zu ziehen und es in einem anderen Befehl verwenden. Ich sollte auch hinzufügen, dass diese Zahlen getrennt verwendet werden müssen. Vielen Dank!

Edit: Danke für die Beantwortung jeder die Hilfe lieben; Hier ist, was ich versuche jetzt laufen:

mediainfo.lnk --Language=raw --Output=General;%Duration% "C:\Users\Tyler\Desktop\Psych s05e11.mp4" 

und der Ausgang ist:

2556249 

Jetzt brauche ich einen Weg, um die ersten vier Ziffern zu nehmen und sie in einem anderen Befehl verwenden, irgendwie macht 2556 eine Variable?

+1

Können Sie nach sehen konnte, was Sie versucht haben? Sie können FOR/F und FIND verwenden, um dieses Problem zu lösen. – soja

+0

Sie müssen wissen, wie Sie mediainfo ausführen, bevor wir eine Lösung bereitstellen können. – Squashman

Antwort

0

Wenn Sie die Dauer benötigen, verwenden Sie z. dieser Befehl:

mediainfo "--Output=General;%Duration%" YourFileName.ext 

In einer allgemeinen Weise, wenn Sie zu einem gewissen Automatisierungs denken, lieber zB verwenden:

mediainfo -f --Language=raw YourFileName.ext 

und die Linien wählen, die besser Ihren Bedarf passt, zu vermeiden Felder mit „/ String "weil sie nur zur Anzeige gedacht sind (nicht zur Automatisierung).

Jérôme, Entwickler von Mediainfo.

+0

Ich führe den Befehl so: mediainfo --Language = rohe --Output = Allgemein;% Dauer% "filename.ext" >> "outputfile.txt" und ich bekomme nur die Dauer wie ich will, danke für diese Hilfe! –

+0

Hier ist ein seltsames Problem, auf das ich gestoßen bin; Wenn ich den Befehl aus einem Terminal leite, wie ich es im letzten Kommentar gezeigt habe, bekomme ich die richtige Ausgabe, aber die Verwendung desselben Befehls in einer Batch-Datei gibt eine Ausgabe ohne Optionen zurück, sie läuft wie folgt: mediainfo --Output = Datei: \\ Datei.txt "Dateiname.Ext". Zu viele Informationen geben! Was könnte ich tun, um das zu umgehen? –

+0

Nur um Ihnen zu sagen (als Entwickler) sollten Sie niemals '%' als Var Definierer in einer CLI Version eines Soft verwenden. Verwenden Sie besser ein anderes Zeichen wie $. Wie auch immer, super weich !! – SachaDee

0

FOR /F

@echo off 
for /f "delims=" %%a in ('mediainfo "--Output=General;%%Duration%%" "C:\Users\Tyler\Desktop\Psych\s05e11.mp4"') do set $Duration=%%a 

Echo %$Duration% 

Verwendung einer temporären Datei verwenden

@echo off 
mediainfo.exe --Language=raw --Output=General;%%Duration%% "C:\Users\Tyler\Desktop\Psych s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=%$Duration:~0,4% 

echo Result = %$Duration% 
del out.txt 

andere Art und Weise Idee mit @ Jérôme Martinez [raw -Ausgang]. ohne temporäre Datei, mit findstr:

@echo off 
for /f "tokens=2 delims=:" %%a in ('mediainfo -f --Language=raw "C:\Users\Tyler\Desktop\Psych s05e11.mp4" ^| findstr /i "duration"') do (
    set $Duration=%%a 
    goto:next 
) 

:next 
set $Duration=%$Duration:~1,4% 
echo %$Duration% 
+0

Danke für die Hilfe; Scheint näher als alles, was ich bisher habe! Die Ausgabe des Echos ist jedoch: Ergebnis = ~ 0,4 –

+0

Es wurde festgestellt, dass der Pfad falsch eingerichtet wurde. Die Ausgabe lautet jetzt: Ergebnis = Alte –

+0

Ok und wenn Sie 'mediainfo.lnk --Language = raw ausführen --Output = Allgemein; ^% Dauer ^% "C: \ Benutzer \ Tyler \ Desktop \ Psych s05e11.mp4" 'Was ist die genaue Ausgabe? In jedem Fall arbeiten Sie besser direkt an der '.exe' und nicht an der .lnk – SachaDee

0

Okay, hier ist was ich tat schließlich, vielen Dank für all die Hilfe!

C:\mediainfo\MediaInfo.exe --Language=raw --Output=General;%%Duration%% "C:\Users\Tyler\Desktop\Psych_s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=%$Duration:~0,4% 

echo Result = %$Duration% 
del out.txt 
pause 

und der Ausgang ist:

C:\mediainfo\MediaInfo.exe --Language=raw --Output=General;%Duration% "C:\Users\Tyler\Desktop\Psych_s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=2556 
echo Result = 2556 
Result = 2556 
del out.txt 
pause 
Press any key to continue . . . 

@echo outta dort auszog, so dass Sie es alle

+0

Kannst du die Antwort als gelöst bitte setzen !!! – SachaDee

Verwandte Themen