扩展变量不被接受为条件?

问题描述 投票:3回答:1

此代码的目标是解析一个简单的文本文件,并检查每一行的第一个单词是否与测试变量匹配。

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

输出总是“不”

谁知道我错过了什么?

windows batch-file
1个回答
3
投票

两件事情。

首先,pcvers将依次设置为每个输入行的值,但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)
© www.soinside.com 2019 - 2024. All rights reserved.