0

MediaInfo有这个命令行工具,我们用它来打印视频文件信息。例如,我想获取视频文件持续时间值:

mediainfo --Inform=General;%Duration/String2% video.mkv
46 min 57 s

如您所见,它打印46 min 57 s的是正确的。

现在假设我想将该值放入一个变量中。所以我们运行这个:

for /f "usebackq" %a in (`"mediainfo --Inform=General;%%Duration/String2%% video.mkv"`) do set duration=%a
set duration=%46

如您所见,它提供set duration=%46了一条新线路?如果我接下来%duration%输入,我会得到:

'%46' is not recognized as an internal or external command,
operable program or batch file.

到底是怎么回事?如何获得我的%duration%变量显示46 min 57 s

4

2 回答 2

1
for /f "usebackqDELIMS=" %%a

默认分隔符包括空格。此语法禁用分隔符,因此分配了整行。

如果您正在运行包含此行的批处理文件,则ametavariable需要有 2 。%如果您从提示符运行,则需要%a. 这也适用于分配指令。

不知道你想用%46malarkey 做什么。请解释。

于 2017-04-01T12:15:45.663 回答
1

在批处理文件中:

@echo off
for /f "tokens=*" %%a in ('mediainfo --Inform=General;%Duration/String2% video.mkv') do set duration=%%a
echo %duration%
pause

在 CMD 中

for /f "tokens=*" %a in ('mediainfo --Inform=General;%Duration/String2% video.mkv') do set duration=%a
echo %duration%

输出:

46 分 57 秒

于 2017-04-01T12:16:10.233 回答