我们使用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
?
答案 0 :(得分:1)
for /f "usebackqDELIMS=" %%a
默认分隔符包括空格。此语法禁用分隔符,因此分配了整行。
如果您正在运行包含此行的批处理文件,metavariable
a需要有2 %
。如果从提示符运行,则需要%a
。这也适用于赋值指令。
不知道你试图用%46
malarkey做什么。请解释一下。
答案 1 :(得分: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秒