@echo off
chcp 65001
cls
setlocal EnableDelayedExpansion
SET APP_NAME=MINGW_HOME
SET DIR_HOME=%~dp0
SET BIN_HOME=%%!APP_NAME!%%\bin
SET FIRST_CHAR=
SET GET_PATH=!PATH!;!BIN_HOME!
SET PATH_ARRAY_SIZE=0
SET ENV_PATH=
:while
if "!GET_PATH!" == "" (
if "!ENV_PATH!" == "" (
goto :beakWhile
)
) else (
SET FIRST_CHAR=!GET_PATH:~0,1!
SET GET_PATH=!GET_PATH:~1!
if "!FIRST_CHAR!" neq ";" (
SET ENV_PATH=!ENV_PATH!!FIRST_CHAR!
goto :while
)
)
SET /A LEN=!PATH_ARRAY_SIZE!-1
for /L %%i in (0,1,!LEN!) do (
if "!PATH_ARRAY[%%i]!" == "!ENV_PATH!" (
SET ENV_PATH=
goto :while
)
)
if "!ENV_PATH!" neq "" (
SET "PATH_ARRAY[!PATH_ARRAY_SIZE!]=!ENV_PATH!"
SET /A PATH_ARRAY_SIZE+=1
SET ENV_PATH=
)
goto :while
:beakWhile
SET ALL_PATH=!PATH_ARRAY[0]!
SET /A LEN=!PATH_ARRAY_SIZE!-1
for /L %%i in (1,1,!LEN!) do (
SET ALL_PATH=!ALL_PATH!;!PATH_ARRAY[%%i]!
)
echo -----------------------------------------------------------------------------------------
echo 当前PATH:
echo !PATH!
echo -----------------------------------------------------------------------------------------
echo 重设置PATH:
echo !ALL_PATH!
echo -----------------------------------------------------------------------------------------
set /p confirmation=是否重新设置PATH? (y/n):
if /i "!confirmation!" == "y" (
echo %PATH% > backup_path_reg
if "!ALL_PATH!" == "" (
SET ALL_PATH=%%SystemRoot%%\system32;%%SystemRoot%%;%%SystemRoot%%\System32\Wbem;%%SYSTEMROOT%%\System32\WindowsPowerShell\v1.0\;%%JAVA_HOME%%\bin
)
SET REG_PATH=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
reg query "!REG_PATH!" /v PATH > nul 2>&1
if "!errorlevel!" == "0" (
echo reg add "!REG_PATH!" /v "!APP_NAME!" /t REG_EXPAND_SZ /d "!DIR_HOME!\" /f
reg add "!REG_PATH!" /v "!APP_NAME!" /t REG_EXPAND_SZ /d "!DIR_HOME!\" /f
echo -----------------------------------------------------------------------------------------
echo reg add "!REG_PATH!" /v PATH /t REG_EXPAND_SZ /d "!ALL_PATH!" /f
reg add "!REG_PATH!" /v PATH /t REG_EXPAND_SZ /d "!ALL_PATH!" /f
) else (
echo setx !APP_NAME! "!DIR_HOME!\"
setx !APP_NAME! "!DIR_HOME!"
echo -----------------------------------------------------------------------------------------
echo setx PATH "!ALL_PATH!"
setx PATH "!ALL_PATH!"
)
) else (
pause
)
endlocal
Windows添加PATH变量脚本
于 2024-09-08 13:04:49 首次发布