2017-07-03 148 views
0

我想分解一个批处理文件,将环境变量设置为另一个批处理文件。这件作品有些涉及,我不想在多个批处理文件中重复它。我不会过多地将这篇文章复杂化为我试图在嵌套批处理文件中运行的实际代码,但会提供一个简单的示例,显示我正在尝试执行的操作并重现该问题。在嵌套批处理文件中设置环境变量

Batch1.cmd

cmd.exe /c setvar.cmd abc def 
set abc 

setvar.cmd

set var=%1 
set val=%2 
set %var%=%val% 

在Batch1.cmd “设置ABC” 返回错误是这样的:未定义

环境变量ABC

我想象cmd.exe启动一个新的环境,因为返回到Batch1.cmd,变量不存在。

有没有一种方法可以嵌套批处理文件并保持它创建的环境?

回答

3

环境块不在进程之间共享。在开始一个新的cmd实例时,在将控件返回到当前批处理文件之前,会创建,更改和销毁单独的环境块,因为它是在不同的进程中完成的,所以不会看到任何更改。

使用call setvar.cmd abc def在当前进程中启动嵌套批处理文件。

相关问题