我是一个Windows批处理脚本的新手,也许这是一个常见问题,已经被多次回答过了。我的问题出在以下脚本中:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set var1=1
echo var1 = %var1%
set var2=var1 init value : %var1%, var1 delayed value : !var1!
set var1=2
echo var1 = %var1%
echo var2 = !var2!
endlocal
当前的输出是:
var1 = 1
var1 = 2
var2 = var1 init value : 1, var1 delayed value : 1
但是期望的输出应该是:
var1 = 1
var1 = 2
var2 = var1 init value : 1, var1 delayed value : 2
这该怎么实现呢?有什么想法吗?在var1的值改变后,如何重新评估var2变量?谢谢!
delayedexpansion
,因为采用了“调用echo”解决方法来获取变量的运行时值。在 OP 的代码中,两者都被替换,因为set
没有在可变的值上执行 - 此时,%var%
和!var!
是相同的。 - Magoo