Bat 之 更改 path 環境變量
:: 使用方法:
:: 運行 getSystemPath.bat ,會在本目錄下生成 istempPath.txt 文件
:: 修改 istempPath.txt 里的內容為你想要的 path 環境變量
::
:: 右鍵管理員方式運行 setSystemPath.bat ,將設置環境變量 到本機器
::
:: @author:kutsh
:: @date:2020年10月16日22:04:07
getSystemPath.bat
@echo off
::
:: 使用方法:
:: 運行 getSystemPath.bat ,會在本目錄下生成 istempPath.txt 文件
:: 修改 istempPath.txt 里的內容為你想要的 path 環境變量
::
:: 右鍵管理員方式運行 setSystemPath.bat ,將設置環境變量 到本機器
:: @filename:getSystemPath.bat
:: @author:kutsh
:: @date:2020年10月16日22:04:07
::
echo.
:: 按 ; 分開,寫入 臨時文件 istempPath.txt
set EN_PATH_FILE=istempPath.txt
set str=
:: 獲取 path 環境變量設置,str 類似這樣,str=AAA;BBB;CCC;DDD;EEE;FFF
:: 方法1獲取的參數會有變化,解析了 %value% 這樣的值。所以不可用
:: set str=%path%
:: 方法2 使用 reg 查詢注冊表
for /F "tokens=1,2,* " %%j in ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path ^| findstr /i "Path"') do (
set str=%%l
)
:: str的副本
set remain=%str%
:: 為了創建一個空文件
::someIdontKonwnPut 2>nul >%EN_PATH_FILE%
type nul > %EN_PATH_FILE%
:loop
for /f "tokens=1* delims=;" %%a in ("%remain%") do (
::輸出第一個分段(令牌)
echo %%a>>%EN_PATH_FILE%
:: 將截取剩下的部分賦給變量remain,其實這里可以使用延遲變量開關
set remain=%%b
)
::如果還有剩余,則繼續分割
if defined remain goto :loop
echo ******wirte in file %EN_PATH_FILE% ok.******
echo on
setSystemPath.bat
@echo off
::
:: 使用方法:
:: 運行 getSystemPath.bat ,會在本目錄下生成 istempPath.txt 文件
:: 修改 istempPath.txt 里的內容為你想要的 path 環境變量
::
:: 右鍵管理員方式運行 setSystemPath.bat ,將設置環境變量 到本機器
:: @filename:setSystemPath.bat
:: @author:kutsh
:: @date:2020年10月16日22:04:07
::
:: 開啟環境變量
setlocal enabledelayedexpansion
echo.
echo ******************start******************
echo.
set enbuf=%~dp0
set EN_PATH_FILE=!enbuf!istempPath.txt
:: 判斷文件,不在就退出
::echo EN_PATH_FILE=%EN_PATH_FILE%
if not exist %EN_PATH_FILE% (
echo this is that the txt is't exist
goto :exitThisCmd
)
set bufString=
set bufpath=
for /f "delims=" %%a in (%EN_PATH_FILE%) do (
set bufpath=%%a
if defined bufpath (
if not "!bufpath:~-1!"==";" (set bufpath=!bufpath!;)
set bufString=!bufString!!bufpath!
)
)
:: 輸出結果
::echo bufString=!bufString!
:: 更改 注冊表的路徑
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
:: 更改 注冊表的 value
set evname=Path
:: 更改 注冊表的 data
set mysetpath=!bufString!
reg add "%regpath%" /v %evname% /t REG_EXPAND_SZ /d "%mysetpath%" /f
echo.
echo ***************************************************
echo ****** wirte ******
echo ****** the file ******
echo ****** %EN_PATH_FILE% ******
echo ****** to ******
echo ****** regeit ******
echo ****** ok. ******
echo ***************************************************
echo.
goto exitOK
:exitThisCmd
echo.
echo ******waring : wirte the file not exist.******
:exitOK
echo.
pause
echo on
