Windows CLI 不显示带空格的正确变量
Windows CLI doesn't show correct variables with spaces
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
?如果我输入 next %duration%
我会得到:
'%46' is not recognized as an internal or external command,
operable program or batch file.
这是怎么回事?如何让我的 %duration%
变量显示 46 min 57 s
?
for /f "usebackqDELIMS=" %%a
默认分隔符包括 space。此语法禁用定界符,因此分配了整行。
如果您是 运行 包含此行的批处理文件,metavariable
a 需要有 2 %
。如果根据提示您是 运行,则需要 %a
。这也适用于赋值指令。
不知道您要用 %46
恶意键做什么。请解释。
在批处理文件中:
@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 min 57 s
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
?如果我输入 next %duration%
我会得到:
'%46' is not recognized as an internal or external command,
operable program or batch file.
这是怎么回事?如何让我的 %duration%
变量显示 46 min 57 s
?
for /f "usebackqDELIMS=" %%a
默认分隔符包括 space。此语法禁用定界符,因此分配了整行。
如果您是 运行 包含此行的批处理文件,metavariable
a 需要有 2 %
。如果根据提示您是 运行,则需要 %a
。这也适用于赋值指令。
不知道您要用 %46
恶意键做什么。请解释。
在批处理文件中:
@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 min 57 s