Windows命令行:将全局变量设置为彼此

时间:2010-12-15 07:11:20

标签: command-line

情景进一步更新

大家好:

我正在尝试在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状态的第二次运行又回来了。任何想法为什么会发生这种情况?

3 个答案:

答案 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”。