情景进一步更新
大家好:
我正在尝试在Windows命令行批处理语言中将全局变量设置为另一个。我尝试过的语法如下:
:: these are global vars
SET varThree=%varOne%\something
SET varOne=
SET varTwo=2
:Section
SET varOne=%varTwo%
::more setting of varOne to other global variables
GOTO Section2
:Section2
echo %varThree%
GOTO cleanup
:cleanup
SET varThree=
SET varTwo=
SET varOne=
回显%varThree%时,varOne的值似乎丢失了。
我想知道如何正确设置上述变量?
TIA。
修改 的 清理部分用于确保在退出程序时清除变量。当我删除它时,第二次运行以使varOne失去其状态。同样,当我重新引入它时,varOne状态的第二次运行又回来了。任何想法为什么会发生这种情况?
答案 0 :(得分:2)
您不使用左侧的百分号。 此外,您可能希望阅读延迟扩展变量(例如!varTwo!而不是%varTwo%),因为您可能会遇到不正确扩展的问题。 请参阅此有关延迟扩展的链接:Cmd.exe Documentation
编辑:你也错过了左边的“设置”,所以:
:Section
%varOne%=%varTwo%
应该是:
:Section
Set varOne=%varTwo%
答案 1 :(得分:1)
尝试:
varOne=%varTwo%
答案 2 :(得分:1)
您在寻找“后编译”语法时错了。 在你的场景中
SET varThree=%varOne%\something
导致varThree设置为“\ something”,因为varOne尚未定义。 说到你的场景,你必须使用
echo %varOne%%varThree%
in“:section2”。