我不确定这个问题是否正确,但我正在尝试为我的问题找到解决方案,如下所示:
set var1=ABC
set otherevars=C:\temp2
set %var1%dfts=C:\temp\test
到上面一行为止一切都正常,但是,我们可以得到下面的值吗
我正在寻找设置另一个环境变量,如下所示:
echo set projdeflts=%var1%dfts;%otherevars%
^^^^^^^^^^
我期望项目为 C:\temp\test;C:\temp2
答案1
您的问题在于 cmd 脚本的解析方式。它只解析一次,因此,当涉及到此行时:
echo set projdeflts=%var1%dfts;%otherevars%
%var1% 按原样进行评估,从而得到 ABCdfts。您不能嵌套这些查找。但鉴于所有信息都已包含在脚本本身中,您可以直接调用结果。例如:
echo set projdeflts=%ABCdfts%;%otherevars%
如果您想要控制嵌套变量分配,则需要切换到更强大的脚本语言,例如 Powershell。
然后你只需这样做:
$var = @{"var1" = "ABC"}
$var.var1 #(which prints ABC)
要不就
$var1 = "ABC"
$var1 #(which prints ABC)