This commit is contained in:
claustromaniac 2017-12-03 13:35:41 +00:00
parent 8a99bb350c
commit ce3c077d06

View File

@ -3,7 +3,7 @@ TITLE ghacks user.js updater
REM ### ghacks-user.js updater for Windows REM ### ghacks-user.js updater for Windows
REM ## author: @claustromaniac REM ## author: @claustromaniac
REM ## version: 3.1a2 REM ## version: 3.1
SET _myname=%~n0 SET _myname=%~n0
SET _myparams=%* SET _myparams=%*
@ -36,9 +36,15 @@ GOTO parse
:endparse :endparse
ECHO. ECHO.
IF DEFINED _updateb ( IF DEFINED _updateb (
REM THe normal flow here goes from phase 1 to phase 2 and then phase 3.
IF NOT "!_myname:~0,9!"=="[updated]" ( IF NOT "!_myname:~0,9!"=="[updated]" (
REM Phase 3
REM The new script, with the original name, should:
REM Delete the [updated]*.bat script
REM Begin the normal script routine.
IF EXIST "[updated]!_myname!.bat" ( IF EXIST "[updated]!_myname!.bat" (
DEL /F "[updated]!_myname!.bat" REN [updated]!_myname!.bat [updated]!_myname!.bat.old
DEL /F "[updated]!_myname!.bat.old"
ECHO Script updated^^! ECHO Script updated^^!
ECHO. ECHO.
TIMEOUT 3 >nul TIMEOUT 3 >nul
@ -46,6 +52,11 @@ IF DEFINED _updateb (
ECHO. ECHO.
GOTO begin GOTO begin
) )
REM Phase 1
REM -updatebatch will:
REM Download new batch and name it [updated]*.bat
REM Open that script in a new CMD window.
REM Exit
ECHO Updating script... ECHO Updating script...
ECHO. ECHO.
REM Uncomment the next line and comment the powershell call for testing. REM Uncomment the next line and comment the powershell call for testing.
@ -63,11 +74,20 @@ IF DEFINED _updateb (
EXIT /B EXIT /B
) )
) ELSE ( ) ELSE (
REM Phase 2
REM The [updated]*.bat script will:
REM Copy itself overwriting the original batch.
REM Start that script in a new CMD instance.
REM Exit.
IF "!_myname!"=="[updated]" ( IF "!_myname!"=="[updated]" (
ECHO The [updated] label is reserved. Rename this script and try again. ECHO The [updated] label is reserved. Rename this script and try again.
ECHO. ECHO.
TIMEOUT 300 >nul TIMEOUT 300 >nul
) ELSE ( ) ELSE (
IF EXIST !_myname:~9!.bat (
REN !_myname:~9!.bat !_myname:~9!.bat.old
DEL /F !_myname:~9!.bat.old
)
COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat" COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat"
START CMD /C "!_myname:~9!.bat" !_myparams! START CMD /C "!_myname:~9!.bat" !_myparams!
) )