如何使用Windows批处理将文本文件内容读入变量?

时间:2014-06-10 16:31:29

标签: batch-file

我试图在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仍然为空。谁能看到我做错了什么?

2 个答案:

答案 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%