فهرست منبع

Drastically rewrote the path script to handle Explorer's stubborn grasp of EnvVars. Tested on Win7.

IBNobody 10 سال پیش
والد
کامیت
a3ed432273
1فایلهای تغییر یافته به همراه68 افزوده شده و 11 حذف شده
  1. 68 11
      1-setup-path-win.bat

+ 68 - 11
1-setup-path-win.bat

@@ -1,14 +1,71 @@
-@echo off
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
 
-reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul
-echo.
+SET NEWPATH1="C:\MinGW\msys\1.0\bin"
+SET NEWPATH2="C:\MinGW\bin"
 
-if NOT ["%errorlevel%"]==["0"] (
-	echo FAILED. You probably just need to run the script with administrator privileges.
-) else (
-	echo Success!
-	setx QMK QMK > nul
-)
+:: Make sure paths exist
+IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch)
+IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
 
-echo.
-pause
+:: 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