2012-03-01 266 views
1

我有一個windows批處理腳本,它獲取PATH環境變量,檢查它是否有一些值,然後將其設置回來。例如:批處理腳本機環境變量

SET CURRPATH=%PATH% 
:: do some stuff to check for a value in CURRPATH and add the value in if it is not in there 
setx PATH %PATH% 

這工作,但問題是,別的東西我安裝以前創建的名爲Path的一個用戶系統環境變量。當我在批處理腳本中訪問%PATH%變量時,它會連接用戶環境變量PATH和機器環境變量PATH。每次運行腳本時,用戶變量PATH都會附加到機器環境變量中。有沒有辦法只是訪問機器環境變量?

雖然我可以簡單地刪除用戶環境變量PATH,但這不是一個好的通用解決方案,因爲我無法保證運行腳本的人是否會遇到同樣的問題。

注意這似乎是具體到PATH變量

回答

0

有至少一個其他問題,您的做法:將擴大目前在路徑中的任何環境變量,這可能是不可取的。另外你可能會發現setx偶爾會掛起,我相信這是由於其他應用程序在廣播更改時沒有按預期做出響應。

最好的解決方案可能是建立一個MSI文件或使用另一個發展良好的安裝程序技術。

其次,最好的辦法是編寫一個應用程序(一個真正的應用程序,而不是批處理腳本)來操作持有環境變量的註冊表設置。含有機環境變量的註冊表項,可以在這裏找到:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 

this question見的超級用戶。這裏有一個答案,其中包括基於批處理文件的解決方案,儘管它不能可靠地工作。

相關問題