ppp

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
posted @ 2020-10-17 03:52  KutsuHaku  阅读(1523)  评论(0编辑  收藏  举报
页脚 HTML 代码