使用mediainfo的输出作为另一个命令中的变量

时间:2016-10-06 15:46:17

标签: file batch-file mediainfo

因此,我尝试设置一种使用bat文件启动视频的简单方法,然后首先运行Mediainfo以获取视频的长度,以便它可以随后停止vlc或其他任何其他内容。做完了。

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

这是我在txt文件中获得的mediainfo的输出,我试图从持续时间位中拉出42和36并在另一个命令中使用它。我还要补充一点,这些数字必须单独使用。谢谢!

编辑:感谢您的回复,每个人都热爱帮助; 以下是我现在要尝试的内容:

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

,输出为:

2556249

现在我需要一种方法来获取前四位数并在另一个命令中使用它们,以某种方式使2556变量?

3 个答案:

答案 0 :(得分:0)

如果您需要持续时间,请使用例如这个命令:

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

一般来说,当你考虑某些自动化时,更喜欢使用例如:

mediainfo -f --Language=raw  YourFileName.ext

并选择最适合您需要的行,避免使用带有“/ String”的字段,因为它们仅用于显示(不适用于自动化)。

MediaInfo的开发人员Jérôme。

答案 1 :(得分: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

使用@JérômeMartinez[raw -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%

答案 2 :(得分: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带到那里,所以你可以看到所有