此代码的目标是解析一个简单的文本文件,并检查每一行的第一个单词是否与测试变量匹配。
setlocal enabledelayedexpansion
set testvar=pc3
for /f "tokens=*" %%a in (input.txt) do (
for /f "tokens=1-2 delims= " %%G in ("%%a") do set pc=%%G&set vers=%%H&echo "%testvar%"&echo "!pc!"
if "!pc!" == "testvar" (echo Yes) ELSE (echo no)
)
pause
在这种情况下,input.txt如下:
pc1 ver1
pc2 ver1
pc3 ver2
输出总是"没有"
任何人都知道我错过了什么?
答案 0 :(得分:3)
两件事。
首先,pc
和vers
将依次设置为每个输入行的值,但if
测试只会在for...%%G...
完成后完成读取每一行,所以它将在最后一行 上完成,这是最后一次设置变量。
如果您打算在每个输入行上执行if
测试(您没有说...),那么测试需要包含在do
中
for /f "tokens=1-2 delims= " %%G in ("%%a") do (set pc=%%G&set vers=%%H&echo "%testvar%"&echo "!pc!"
if "!pc!" == "testvar" (echo Yes) ELSE (echo no)
)
第二个问题是if
测试会将pc
中的当前值与文字 testvar
进行比较。毫无疑问,你打算它应该与testvar
if "!pc!" == "%testvar%" (echo Yes) ELSE (echo no)