Windows10 edit Environmental Variables 修改環境變數

GUI

指的就是叫出以下畫面來修改

有很多入口可以進到以上畫面

  1. 控制台 → 系統及安全性 → 系統 → 進階系統設定
  2. 本機滑鼠右鍵 → 內容 → 進階系統設定
  3. Windows + R → SystemPropertiesAdvanced
  4. Windows + R → sysdm.cpl → 進階
  5. CMD → rundll32 sysdm.cpl,EditEnvironmentVariables
  6. Windows + R → powershell -command "&{start-process rundll32.exe sysdm.cpl,EditEnvironmentVariables -verb RunAs}
  7. Windows → 編輯系統環境變數

CMD

set

語法:SET [variable=[string]]

rem 顯示全部的環境變數
set

rem 顯示指定的環境變數
set test

rem 設定環境變數
set test=abc

只在當前視窗(current CMD session)生效
若要永久、全面生效必須使用其他指令

setx

語法:SETX var value [/M]

rem 新增、修改使用者變數 HKEY_CURRENT_USER
setx test abc

rem 新增、修改系統變數 HKEY_LOCAL_MACHINE
setx test abc /m
  • %value% 要以引號包起來:”%value%”
  • 新增系統變數必須以系統管理員身分執行
  • 開新視窗才生效
  • 刪除要用 reg 指令

reg

查詢的語法:REG QUERY KeyName [/v ValueName]
新增、修改的語法:REG ADD KeyName /v ValueName /d Data /t Type /f
刪除的語法:REG DELETE KeyName /v ValueName /f

rem 列出全部的使用者變數
reg query "HKEY_CURRENT_USER\Environment"

rem 新增使用者變數
reg add "HKEY_CURRENT_USER\Environment" /v test /d abc /t REG_EXPAND_SZ /f

rem 列出指定的使用者變數
reg query "HKEY_CURRENT_USER\Environment" /v test

rem 刪除指定的使用者變數
reg delete "HKEY_CURRENT_USER\Environment" /v test /f


rem 列出全部的系統變數
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

rem 新增系統變數
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v test /d abc /t REG_EXPAND_SZ /f

rem 列出指定的系統變數
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v test

rem 刪除指定的系統變數
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v test /f

註:

  • KeyName 若包含空白,必須以雙引號包起來
  • 使用者變數 KeyName:HKEY_CURRENT_USER\Environment
  • 系統變數 KeyName:"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
  • /f 是略過提示強制執行,因此要小心
  • 對系統變數的新增刪除必須以系統管理員身分執行
  • ^%systemroot^% → %systemroot%
    %systemroot% → C:\WINDOWS

wmic

類似資料庫的操作方式

rem 列出所有環境變數
wmic environment

rem 列出符合條件的環境變數
wmic environment where "name='path'"

rem 列出使用者變數
wmic environment where "systemvariable=false"
wmic environment where "username='%userdomain%\\%username%'"

rem 列出系統變數
wmic environment where "systemvariable=true"
wmic environment where "username='<system>'"

rem 只顯示指定欄位
wmic environment where "name='path'" get name, variablevalue

rem 新增使用者變數
wmic environment create username="%username%", name="test", variablevalue="abc"

rem 新增系統變數
wmic environment create username="<system>", name="test", variablevalue="abc"

rem 修改符合條件的環境變數
wmic environment where "name='test'" set variablevalue="abcde"

rem 刪除符合條件的環境變數
wmic environment where "name='test'" delete
  • 開新視窗才生效
  • 正在執行的程式無法套用,需要重啟
  • 刪除後 cmd 仍暫存