Bat 之 更改 path 環境變量


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM