我现在正在处理一些批处理文件,并且我遇到了一些使用SET的行为,我无法弄清楚。
我正在解析命令行实用程序生成的文件,试图验证寄存器写入。
我的测试代码是:
@echo off
for /F "tokens=1,2,3,4,5,6 delims=>=- " %%A in (test.log) do (
if %%A == write (
set WVAL= %%F
set WVAL
echo Write value is %WVAL% )
)
pause
(仅供参考,在test.log文件中,有两行,其第一个参数是"写")。
此批处理文件的输出为:
WVAL= 0x2100
Write value is
WVAL= 0x24c0
Write value is
Press any key to continue . . .
显然正在设置WVAL(由独立"设置WVAL"命令"表示。但是当我在回声线中使用它时,为什么不显示该值?
为了增加我的困惑,如果我在for循环之外任意设置WVAL,它就可以了。例如:
@echo off
set WVAL=2
for /F "tokens=1,2,3,4,5,6 delims=>=- " %%A in (test.log) do (
if %%A == write (
set WVAL= %%F
set WVAL
echo Write value is %WVAL% )
)
pause
将返回此信息:
WVAL= 0x2100
Write value is 2
WVAL= 0x24c0
Write value is 2
Press any key to continue . . .
知道为什么会这样吗?
感谢。
-Sean
答案 0 :(得分:0)
发帖后5秒,我发现这个帖子完全回答了我的问题:
Batch File not setting variable
丹尼斯·范吉尔斯在评论中提到,实际上需要延迟扩张。
感谢另一个主题中的MC ND来回答这个问题。
在询问之前我似乎需要做更多的研究!