此代码的目标是解析一个简单的文本文件,并检查每一行的第一个单词是否与测试变量匹配。
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
输出总是“不”
谁知道我错过了什么?
两件事情。
首先,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)