qmk/1-setup-path-win.bat
NoahAndrews b437de8874 Added admin privilege check
Running this as a non-administrator appears to work at first, but the
changes wouldn't stick on my Win 8.1 system.  It's weird, but this
script needs to run as admin.
2016-04-11 14:30:15 -04:00

77 lines
2.1 KiB
Batchfile

@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@ECHO OFF
SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
SET NEWPATH1="C:\MinGW\msys\1.0\bin"
SET NEWPATH2="C:\MinGW\bin"
:: Make sure we're running with administrator privileges
NET SESSION >nul 2>&1
IF ERRORLEVEL 1 (
ECHO FAILED. Run this script with administrator privileges.
GOTO ExitBatch
)
:: Make sure the second path exists. The first path won't be created until the second script is run
IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
:: Add paths
CALL :AddPath %NEWPATH1%
CALL :AddPath %NEWPATH2%
:: Branch to UpdateEnv if we need to update
IF DEFINED UPDATE (GOTO UpdateEnv)
GOTO ExitBatch
:: -----------------------------------------------------------------------------
:UpdateEnv
ECHO Making updated PATH go live . . .
REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
setx TEMPVAR 1 > nul 2>&1
REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
GOTO ExitBatch
:: -----------------------------------------------------------------------------
:ExitBatch
ENDLOCAL
PAUSE
EXIT /b
:: -----------------------------------------------------------------------------
:AddPath <pathToAdd>
ECHO %PATH% | FINDSTR /C:"%~1" > nul
IF ERRORLEVEL 1 (
REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" > nul 2>&1
IF ERRORLEVEL 0 (
ECHO Adding %1 . . . Success!
SET "PATH=%PATH%;%~1"
SET UPDATE=1
) ELSE (
ECHO Adding %1 . . . FAILED. Run this script with administrator privileges.
)
) ELSE (
ECHO Skipping %1 - Already in PATH
)
EXIT /b
:: -----------------------------------------------------------------------------
:KillExplorer
ECHO Your desktop is being restarted, please wait. . .
ping -n 5 127.0.0.1 > NUL 2>&1
ECHO Killing process Explorer.exe. . .
taskkill /f /im explorer.exe
ECHO.
ECHO Your desktop is now loading. . .
ping -n 5 127.0.0.1 > NUL 2>&1
ECHO.
ping -n 5 127.0.0.1 > NUL 2>&1
START explorer.exe
START explorer.exe %CD%
EXIT /b