是否可以在Batch中更改环境变量并在不重新启动CMD提示的情况下使用它们?

时间:2015-04-06 16:00:34

标签: windows batch-file

我想在CMD提示符下运行的批处理脚本脚本中设置系统范围的环境变量,我已经能够通过调用来实现这一点:

setx MyEnvVar "C:\<Some Path>" /M

然而,当我这样做时:

echo "MyEnvVar is %MyEnvVar%"

之后在提示输出的语句是“MyEnvVar is”,尽管该变量已经设置了setx,我可以通过查看Windows系统属性 - 环境变量GUI来观察它。

我知道这是因为必须重新启动CMD提示才能获取新的环境变量但是我不想停止执行我的批处理脚本并告诉用户手动重启CMD提示窗口重新运行我的脚本,以便拾取环境变量。还有其他方法可以解决这个问题吗?

如果我可以在不使用“调用”方法并将脚本分成两个部分的情况下解决这个问题会更好

batchfileA - 直到并包括更改环境变量的调用之后的代码,然后使用call方法调用batchfileB batchfileB-原始代码的其余部分放在batchfileB中,并使用batchfileA中的call方法调用

1 个答案:

答案 0 :(得分:0)

我曾尝试在setx之​​后使用set并回显结果并且变量为null所以我认为该值没有采取因为我必须重新启动CMD提示我忘记了我已启用DelayedExpansion并且必须使用! (感叹号)而不是我的变量名称周围的%(百分号)符号