2017-07-03 238 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在當前進程中啓動嵌套批處理文件。

相關問題