2

因此,我试图设置一种简单的方法来使用 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 成为变量?

4

3 回答 3

1

如果您需要持续时间,请使用以下命令:

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

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

mediainfo -f --Language=raw  YourFileName.ext

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

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

于 2016-10-06T16:29:05.230 回答
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ôme Martinez [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%
于 2016-10-06T18:37:33.620 回答
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 从那里拿走,这样你就可以看到这一切

于 2016-10-06T20:24:36.180 回答