2017-04-01 78 views
0

有我們用來打印視頻文件信息的MediaInfo這個命令行工具。例如。我希望得到的視頻文件持續時間值:Windows CLI不顯示帶空格的正確變量

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

回答

1
for /f "usebackqDELIMS=" %%a 

默認的分隔符包括空格。此語法將禁用分隔符,以便分配整個行。

metavariable需要有2 %如果您正在運行批處理文件包含此行。如果您從提示符運行,則需要%a。這也適用於分配指令。

不知道你正試圖用%46 malarkey做什麼。請解釋。

+0

「usebackqDELIMS =」工作並用空格輸出正確的值。 – user3108268

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號

+0

在CMD中,它打印整個文本牆,並將所有信息和值設置爲%duration%和echo%duration%給出「Forced:No」,這是打印列表中的最後一項。 – user3108268