2009-01-28 66 views
3

是否有可能使一個批處理文件,可以使持久更改爲環境變量?如何製作更改環境變量的Windows批處理文件?

例如,我的installer.bat腳本將一些文件複製到計算機文件系統中的隨機位置。我想將該位置添加到PATH環境變量中,以便程序可以在當前會話中運行。

僅供參考 - 我正在安裝的東西變化非常頻繁:我想在每次運行程序時都進行全新的安裝。此外,我不想重寫其他以前安裝的程序副本,以防萬一其他(較舊的)實例仍在執行。

我希望能夠做這樣的事情:

rem install_and_run.bat 
install.bat 
myapplication.exe 

可惜,這是不行的,因爲從來沒有INSTALL.BAT「返回」到主腳本。 myapplication.exe永遠不會被調用。接下來我嘗試了:

cmd /C install.bat 
myapplication.exe 

不幸的是,這不起作用,因爲這意味着install.bat運行在完全獨立的cmd.exe外殼中。這意味着一旦腳本終止,因爲cmd.exe也終止,所有環境變量更改都不會持續。

必須有一種方法,使一個批處理文件,它改變了環境變量

有什麼建議?

回答

6

在你的情況,你想要什麼我小號

rem install_and_run.bat 
call install.bat 
myapplication.exe 

也就是說,使用call調用install.bat,使控制將返回到install_and_run.bat

我想你不明白環境變量是每個進程。您的批處理文件在cmd.exe的實例中運行,並且該實例具有一個環境。當您編寫cmd /C時,您正在創建一個cmd.exe的新實例,該實例有其自己的環境。然後install.bat正在對cmd.exe的新實例的環境進行「持久」更改。

1

好了,你可以這樣做:

設置EnvVariableName =「一些價值」

爲您從另一個批處理文件中調用一個單獨的批處理文件,我相信調用命令將返回

rem install_and_run.bat
call install.bat
myapplication.exe

1

您無法創建或修改環境變量,並使其在批處理腳本AFAIK的控制檯會話之間持續存在。

我有一個使用批處理腳本包裝器的VBScript腳本,但我認爲Jay有正確的解決方案。如果你喜歡,我可以發佈我的代碼。

相關問題