2016-10-06 20 views
2

因此,我試圖設置一個簡單的方式,用bat文件啓動視頻,並讓它首先運行Mediainfo以獲取視頻的長度,以便停止vlc或無論什麼時候玩完。使用mediainfo中的輸出作爲另一個命令中的變量

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 

這是從我的MediaInfo在一個txt文件中得到了輸出,我想只是拉了42,並從時間位36個,而在另一個命令中使用它。我還應該補充說,這些數字必須分開使用。謝謝!

編輯:感謝回覆大家熱愛幫助; 這裏就是我想現在運行:

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

,輸出是:

2556249 

現在我需要一種方法來取前四位,並在另一個命令使用它們,不知何故使2556變量?

+1

你可以發佈你試過嗎?您可以使用FOR/F和FIND來解決此問題。 – soja

+0

在我們提供解決方案之前,需要了解您如何執行mediainfo。 – Squashman

回答

0

如果您需要持續時間,請使用這個命令:

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

在一般的方式,當你覺得到一定程度的自動化,更喜歡使用如:

mediainfo -f --Language=raw YourFileName.ext 

,並選擇最符合您需要的線路,避免與「/字符串字段「因爲它們僅用於顯示(不適用於自動化)。

Jérôme,MediaInfo的開發人員。

+0

我正在運行這樣的命令:mediainfo --Language = raw --Output = General;%Duration%「filename.ext」>>「outputfile.txt」,我只得到我想要的持續時間,謝謝幫助! –

+0

這是我遇到的一個奇怪的問題;當我從終端運行命令(如我在最後一個註釋中所示)時,我會得到正確的輸出,但是在批處理文件中使用完全相同的命令會返回沒有任何選項的輸出,它的運行方式如下:mediainfo --Output = file:\\ file.txt「filename.ext」。提供太多信息!我能做些什麼來解決這個問題? –

+0

只是爲了告訴你(作爲開發者),你永遠不要在CLI的CLI版本中使用'%'作爲var定義器。最好使用另一個字符,比如'$'。無論如何,偉大的軟! – 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% 

使用臨時文件

@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 

使用@傑羅姆·馬丁內斯[原-output]理念的另一種方式。 沒有臨時文件,使用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

感謝您的幫助;看起來比我到目前爲止所得到的更接近!然而,回聲輸出是:Result =〜0.4 –

+0

找出路徑剛設置錯誤,得到的位置現在輸出結果是:結果= Alte –

+0

好吧,當你執行'mediainfo.lnk --Language = raw --Output = General; ^%Duration ^%「C:\ Users \ Tyler \ Desktop \ Psych s05e11.mp4」'確切的輸出是什麼?在所有情況下,你會更好地直接使用'.exe'而不是.lnk – SachaDee

0

好這裏是我做了最後,感謝所有幫助!

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 

,輸出是:

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失控那裏,所以你可以看到這一切

+0

你能把答案解決請!!! – SachaDee

相關問題