windows - 如何重新评估批处理变量?

标签 windows batch-file

是否可以重新评估 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/

相关文章:

c++ - 在 Windows 中编译 Clang 插件

c++ - 快速 RAM 中的动态内存分配

batch-file - Batch 中嵌套 for 循环。出现错误,但不确定原因

command-line - 制作用户名和密码的命令提示符

c++ - Visual Studio C++ 为什么不编译 0b00000001

c++ - 如何将 stderr 与输出流相关联

java - 将批处理文件中的数据获取到java程序

batch-file - 使用批处理文件从 COM 端口检索数据

windows - 找到具有搜索功能的文件,但在批处理文件中没有删除功能?

python - Django "SuspiciousOperation"删除上传的文件时出错