[英]How to persistently set a variable in Windows 7 from a batch file?
我正在嘗試使用 bat 文件在 windows 7 中設置 PATH 環境變量; 但是它似乎不起作用。
我正在使用這個 windows 命令:
set PATH=%cd%;%path%
pause
然而,它似乎只對這個 cmd 實例有效。 我希望它是永久性的,因為我首先設置了 PATH,然后運行了一個需要在該文件夾中找到庫的程序。
使用 setx.exe 而不是 set。
setx PATH "%cd%;%path%;"
pause
請注意,這會為所有未來的 cmd 實例設置路徑,但不會為當前實例設置路徑。 如果你需要,也運行你原來的 set 命令。
更新:如果第二個參數包含空格(%path% 總是有),則需要引用它。 請注意,如果 %path% 中的最后一個字符是反斜杠,它將轉義尾隨引號,並且最后一個路徑條目將停止工作。 我通過在結束引號前附加一個分號來解決這個問題。
如果您不想冒險獲得“;;;;;;” 在重復運行后的路徑末尾,然后在設置之前從 %path% 變量中刪除任何尾隨反斜杠,它將正常工作。
如果要在批處理文件中執行此操作,請使用reg命令更改注冊表中 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 項的路徑值。
就像是:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
檢查 %path% 變量中的路徑是否與系統路徑匹配。
正如 wizlb 指出的那樣,做
setx PATH "%cd%;%path%;" -m
將本地環境復制到系統環境,沒有 -m 它將系統環境復制到用戶環境。 兩者都不可取。 為了准確地只編輯注冊表的一部分(系統或用戶,在下面的示例中為系統),您需要這樣做:
for /F "tokens=2* delims= " %%f IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx.exe PATH "%OLD_SYSTEM_PATH%;%OTHER_STUFF%;" -m
要正確執行此操作,我認為您確實需要 go 超越簡單的批處理文件。 MSDN 文檔指出:
要以編程方式添加或修改系統環境變量,請將它們添加到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment注冊表項,然后廣播
WM_SETTINGCHANGE
消息,並將lParam設置為字符串“Environment”。 這允許應用程序(例如 shell)獲取您的更新。
首先,如果沒有 UAC 提升提示,您將無法寫入該密鑰。 最好通過將適當的清單添加到可執行文件來安排。 其次,從批處理文件中廣播WM_SETTINGCHANGE
並不簡單。
在您的 position 中,我會編寫一個簡短的控制台應用程序來完成這項工作。
一個簡單(可能更好)的解決方案是使用 PathMgr.cmd
在https://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e 中的路徑mgr_1.0.2.zip
解壓縮並將 pathmgr.cmd 放在與批處理文件相同的文件夾中,然后在批處理文件中寫入以下兩行:
call pathmgr.cmd /del %cd% /y
call pathmgr.cmd /add %cd% /y
這將:
1) 只更新用戶變量 PATH,2) 不會多次包含系統 PATH
您還可以多次運行批處理文件,它只會在 PATH 中包含您當前的路徑一次。
假設我想創建一個名為“ZIP_PROGRAM”的系統環境變量,並且我想將其指向路徑“reg add C:\Program Files\7-Zip\7z.exe”的可執行文件
我將在 DOS 提示符處執行以下操作:
Step1: 執行以下代碼 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ZIP_PROGRAM /t REG_SZ /d "C:\Program Files\7-Zip\7z.exe" /f
步驟2:注銷然后登錄
Step3:打開DOS Prompt並執行:“set z”,你應該可以看到系統環境變量更新了
使用此命令setx PATH "%PATH%;%MVN_HOME%\bin\"
無論如何,它不會設置在您需要使用的當前 session
設置 PATH="%PATH%;%MVN_HOME%\bin\"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.