Windows添加PATH变量脚本

@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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值