我有批处理文件:
@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.
如何解决批处理文件正确执行的两种情况?
答案 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
变量。