我试图在Stackoverflow上复制这个问题的其他答案中使用的方法,但没有一个对我有效。我试过了:
@echo off
wmic product where name="BMNIA" get Name, Version>tmp.txt
type tmp.txt
REM setlocal ENABLEDELAYEDEXPANSION
REM for /f "delims=" %%x in (tmp.txt) do set ver=%%x
set /p ver=<tmp.txt
echo ver: %ver%
REM endlocal
同时使用重定向方法和for循环方法,但每个方法都返回以下内容:
Name Version
BMNIA 1.1.1.4
ver:
type命令显示脚本能够读取文件内容,但由于某种原因,ver仍然为空。谁能看到我做错了什么?
唐
答案 0 :(得分:0)
以这种方式尝试:
@echo off
setlocal enableextensions enabledelayedexpansion
set PRODUCTNAME=BMNIA
set VER=
for /f "skip=1 delims=" %%p in ('wmic product where name^="%PRODUCTNAME%" get Version 2^> NULL') do (
set VER=%%p
if {!VER!} NEQ {} goto :BREAK
)
:BREAK
echo %VER%
endlocal
如果未安装产品,VER将为空。如果有多个匹配项,则VER将包含wmic.exe输出的第一个实例的版本号。
答案 1 :(得分:0)
@echo off
set ver=not installed
for /f "tokens=2 delims==" %%p in ('wmic product where name^="BMNIA" get Version /value 2^>nul') do set ver=%%p
echo ver: %ver%
set ver=not installed
for /f "tokens=2 delims==" %%p in ('wmic product where name^="whatever" get Version /value 2^>nul') do set ver=%%p
echo ver: %ver%