为什么运行批处理文件会得到不同的结果?

时间:2013-12-23 08:06:02

标签: batch-file operating-system windows-installer wmic

我有批处理文件:

@echo off

set vers=0.0
FOR /F "USEBACKQ" %%A IN (`wmic datafile where name^="C:\\Windows\\System32\\msiexec.exe" get Version`) do (set vers=%%A)

echo %vers% 

@pause

Windows XP(SP2):

3.0.3790.2180

Windows Vista(SP1),Windows XP(x64):

ECHO is off.

如何解决批处理文件正确执行的两种情况?

1 个答案:

答案 0 :(得分:3)

@echo off
    setlocal enableextensions

    set vers=0.0
    FOR /F "tokens=2 delims== usebackq" %%A IN (
        `wmic datafile where name^="C:\\Windows\\System32\\msiexec.exe" get Version /value ^| find "="`
    ) do set "vers=%%A"

    echo %vers% 

    endlocal
pause

它只是要求wmic以格式key=value输出数据,过滤wmic命令的输出,仅搜索具有=的行,并使用此字符作为标记分隔符拆分行。第一个标记(密钥)被忽略,第二个标记(值)被分配给vers变量。