DOS命令新增, 刪除, 查詢系統環境變數(永久/臨時生效)
DOS命令新增, 刪除, 查詢系統環境變數(永久/臨時生效)
參考:
cmd - Is there a command to refresh environment variables from the command prompt in Windows? - Stack Overflow
https://stackoverflow.com/questions/171588/is-there-a-command-to-refresh-environment-variables-from-the-command-prompt-in-w
1、修改登錄檔的方法要重啟/登出/重啟explorer程式才生效(永久的)
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /d "%path%;C:\" /f
2、使用WMIC,立即生效(永久的)(不影響已經開啟的cmd, 隻影響新開啟的cmd)
wmic ENVIRONMENT create name="test1",username="<system>",VariableValue="test_val1" 新增變數
wmic ENVIRONMENT where "name='temp'" get UserName,VariableValue 獲取變數
wmic ENVIRONMENT where "name='test1' and username='<system>'" set VariableValue="%path%;e:\tools" 修改變數
wmic ENVIRONMENT where "name='test1'" delete 刪除變數
3、要在批處理中立即生效(只是臨時的,退出批處理後消失),
批處理中加一句:
path=%path%;C:\
如果使用了上面的第2個方法(WMIC命令), 想要給當前正在執行的cmd重新整理修改後的環境變數, 2個辦法:
方法1:
:: 在批處理指令碼中新增以下程式碼即可
@echo off
::
:: RefreshEnv.cmd
::
:: Batch file to read environment variables from registry and
:: set session variables to these values.
::
:: With this batch file, there should be no need to reload command
:: environment every time you want environment changes to propagate
echo | set /p dummy="Reading environment variables from registry. Please wait... "
goto main
:: Set one environment variable from registry key
:SetFromReg
"%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NUL
for /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do (
echo/set "%~3=%%B"
)
goto :EOF
:: Get a list of environment variables from registry
:GetRegEnv
"%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp"
for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do (
if /I not "%%~A"=="Path" (
call :SetFromReg "%~1" "%%~A" "%%~A"
)
)
goto :EOF
:main
echo/@echo off >"%TEMP%\_env.cmd"
:: Slowly generating final file
call :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd"
call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd"
:: Special handling for PATH - mix both User and System
call :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd"
call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd"
:: Caution: do not insert space-chars before >> redirection sign
echo/set "Path=%%Path_HKLM%%;%%Path_HKCU%%" >> "%TEMP%\_env.cmd"
:: Cleanup
del /f /q "%TEMP%\_envset.tmp" 2>nul
del /f /q "%TEMP%\_envget.tmp" 2>nul
:: Set these variables
call "%TEMP%\_env.cmd"
echo | set /p dummy="Done"
echo .
方法2:
以下程式碼儲存為resetvars.vbs
Set oShell = WScript.CreateObject("WScript.Shell")
filename = oShell.ExpandEnvironmentStrings("%TEMP%\resetvars.bat")
Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set oFile = objFileSystem.CreateTextFile(filename, TRUE)
set oEnv=oShell.Environment("System")
for each sitem in oEnv
oFile.WriteLine("SET """ & sitem & """")
next
path = oEnv("PATH")
set oEnv=oShell.Environment("User")
for each sitem in oEnv
oFile.WriteLine("SET """ & sitem & """")
next
path = path & ";" & oEnv("PATH")
oFile.WriteLine("SET ""PATH=" & path & """")
oFile.Close
在需要重新整理環境變數的批處理中新增以下程式碼:
@echo off
%~dp0resetvars.vbs
call "%TEMP%\resetvars.bat"
以下批處理是通過操作登錄檔來新增, 刪除, 查詢系統環境變數
::DOS命令新增, 查詢系統環境變數
@echo off
echo 新增java環境變數
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set evname=JAVA_HOME
set javapath=c:\java\jdk
reg add "%regpath%" /v %evname% /d %javapath% /f
echo.
echo 查詢path環境變數
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path
echo.
echo 查詢evname環境變數
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v %evname%|findstr jdk
echo.
echo 獲取path環境變數的具體值(具體值中不能有空格)
::delims=後面有一個空格
for /f "tokens=3 delims= " %%a in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do (
set "a=%%a"
echo %%a
)
echo.
echo 獲取evname環境變數的具體值(具體值中不能有空格)
::delims=後面有一個空格
for /f "tokens=3 delims= " %%a in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v %evname%') do (
set "a=%%a"
echo %%a
)
echo.
echo 刪除java環境變數
reg delete "%regpath%" /v "%evname%" /f
pause>nul
exit
相關文章
- Linux中修改環境變數及生效方法(永久、臨時)環境變數檢視Linux變數
- Ubuntu新增刪除環境變數Ubuntu變數
- CentOS新增、刪除環境變數CentOS變數
- linux下export命令新增刪除環境變數LinuxExport變數
- Linux 新增環境變數和刪除環境變數Linux變數
- Ubuntu環境變數——新增與刪除Ubuntu變數
- python設定環境變數(臨時和永久)Python變數
- ubuntu 快捷新增和刪除環境變數Ubuntu變數
- ubuntu環境變數的新增與刪除Ubuntu變數
- linux下export命令新增、刪除環境變數(轉載)LinuxExport變數
- linux環境變數顯示、新增、刪除Linux變數
- 如何在cmd命令列中檢視、修改、刪除與新增環境變數命令列變數
- DOS環境變數變數
- ubuntu 刪除環境變數Ubuntu變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 常用的DOS命令和配置JDK環境變數JDK變數
- 【Linux】-- 環境變數 path 的檢視、新增及刪除Linux變數
- Windows如何在cmd命令列中檢視、修改、刪除與新增、設定環境變數Windows命令列變數
- 批處理-刪除環境變數變數
- 環境變數與檔案查詢變數
- win10系統新增環境變數的方法Win10變數
- debian修改臨時環境變數支援中文變數
- Java環境變數新增Java變數
- ubuntu 環境變數配置 並立即生效Ubuntu變數
- win10更改完環境變數怎麼生效 windows10怎麼讓環境變數生效Win10變數Windows
- 如何在 Linux 上執行命令前臨時清空 Bash 環境變數Linux變數
- win10系統jdk 1.7環境變數不生效怎麼處理Win10JDK變數
- linux系統環境變數Linux變數
- win10 環境變數不生效怎麼辦 win10 環境變數沒生效怎麼解決Win10變數
- Linux環境變數的設定、檢視、刪除Linux變數
- Linux環境變數PATH的增添和刪除操作Linux變數
- Linux下環境變數設定、檢視、刪除Linux變數
- Linux下檢視 設 刪除 環境變數方法 .Linux變數
- win10 如何讓環境變數生效_windows10如何設定環境變數Win10變數Windows
- Linux中修改環境變數及生效方法Linux變數
- oracle JOB 查詢 新增 修改 刪除 執行Oracle
- Linux - 新增PATH環境變數Linux變數
- VUE:vite新增環境變數(一)VueVite變數