簡體   English   中英

批處理腳本計算機環境變量

[英]batch script machine environment variables

我有一個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變量

您的方法還存在至少另一個問題:它將擴展PATH中存在的所有環境變量,這可能是不希望的。 另外,您可能會發現setx偶爾掛起,我相信這是由於其他應用程序在廣播更改時未按預期響應。

最好的解決方案可能是生成MSI文件或使用另一種發達的安裝程序技術。

第二好的方法是編寫一個應用程序(一個真實的應用程序,而不是一個批處理腳本)來操縱保存環境變量的注冊表設置。 可以在此處找到包含機器環境變量的注冊表項:

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

另請參閱有關SuperUser的問題 有一個答案,其中包括基於批處理文件的解決方案,盡管它不能可靠地工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM