是否可以重新评估 Batch 变量?
这是我想做的一个例子:
set a=Hello
set b=%a%
set a=Bye
echo %b%
rem Here, i want to show 'Bye' instead of 'Hello'
最佳答案
您可以使用延迟扩展来通过引用传递。
setlocal enabledelayedexpansion
set "a=Hello"
set "b=a"
set "a=Bye"
echo !%b%!
... 应该输出 Bye
。您正在使用此方法将 b
设置为 a
的变量 name。在echo
行中,批处理线程首先获取b
的值,即a
。然后它通过延迟扩展扩展 !a!
的值。
请注意,如果您的值可能包含感叹号,您可能需要将 enabledelayedexpansion
限制为仅检索您的值,避免在变量设置期间激活它。
set "a=Hello"
set "b=a"
set "a=Bye"
setlocal enabledelayedexpansion
echo !%b%!
endlocal
关于windows - 如何重新评估批处理变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209469/