Windows 不接受扩展变量作为条件?
这段代码的目标是解析一个简单的文本文件,并检查每行的第一个单词是否与测试变量匹配Windows 不接受扩展变量作为条件?,windows,batch-file,Windows,Batch File,这段代码的目标是解析一个简单的文本文件,并检查每行的第一个单词是否与测试变量匹配 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!"
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
测试将只在……%%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)
该死,第二个是个可笑的错误。谢谢你的帮助和澄清!