Browse Source

2nd merge optimisation

While I figure out a fix for the missing characters...

Enclosing the whole merging loop in parentheses and replacing the source file with the entire output at once is more efficient than appending individual lines with >>%~2. The script doesn't have to wait for the HD to continue processing.
claustromaniac 7 years ago
parent
commit
c9e7f1ccfa
1 changed files with 26 additions and 25 deletions
  1. 26 25
      updater.bat

+ 26 - 25
updater.bat

@@ -39,7 +39,7 @@ IF DEFINED _updateb (
 	IF NOT "!_myname:~0,9!"=="[updated]" (
 	IF NOT "!_myname:~0,9!"=="[updated]" (
 		ECHO Checking updater version...
 		ECHO Checking updater version...
 		ECHO.
 		ECHO.
-		DEL /F "[updated]!_myname!.bat" 2>nul
+		IF EXIST "[updated]!_myname!.bat" ( DEL /F "[updated]!_myname!.bat" )
 		REM Uncomment the next line and comment the powershell call for testing.
 		REM Uncomment the next line and comment the powershell call for testing.
 		REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
 		REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
 		(
 		(
@@ -207,37 +207,38 @@ EXIT /B
 
 
 REM ###### Merge function ######
 REM ###### Merge function ######
 :merge
 :merge
-DEL /F %2 2>nul
 SETLOCAL disabledelayedexpansion
 SETLOCAL disabledelayedexpansion
-FOR /F "tokens=1,* delims=]" %%G IN ('find /n /v "" ^< "%~1"') DO (
-	SET "_pref=%%H"
-	SETLOCAL enabledelayedexpansion
-	SET "_temp=!_pref: =!"
-	IF /I "user_pref"=="!_temp:~0,9!" (
-		IF /I NOT "user.js.parrot"=="!_temp:~12,14!" (
-			FOR /F "delims=," %%S IN ("!_pref!") DO (
-				SET "_pref=%%S"
-			)
-			SET _pref=!_pref:"=""!
-			FIND /I "!_pref!" %~2 >nul 2>&1
-			IF ERRORLEVEL 1 (
-				FOR /F "tokens=* delims=" %%X IN ('FIND /I "!_pref!" %~1') DO (
-					SET "_temp=%%X"
-					SET "_temp=!_temp: =!"
-					IF /I "user_pref"=="!_temp:~0,9!" (
-						SET "_pref=%%X"
+(
+	FOR /F "tokens=1,* delims=]" %%G IN ('find /n /v "" ^< "%~1"') DO (
+		SET "_pref=%%H"
+		SETLOCAL enabledelayedexpansion
+		SET "_temp=!_pref: =!"
+		IF /I "user_pref"=="!_temp:~0,9!" (
+			IF /I NOT "user.js.parrot"=="!_temp:~12,14!" (
+				FOR /F "delims=," %%S IN ("!_pref!") DO (
+					SET "_pref=%%S"
+				)
+				SET _pref=!_pref:"=""!
+				FIND /I "!_pref!" %~2 >nul 2>&1
+				IF ERRORLEVEL 1 (
+					FOR /F "tokens=* delims=" %%X IN ('FIND /I "!_pref!" %~1') DO (
+						SET "_temp=%%X"
+						SET "_temp=!_temp: =!"
+						IF /I "user_pref"=="!_temp:~0,9!" (
+							SET "_pref=%%X"
+						)
 					)
 					)
+					ECHO(!_pref!
 				)
 				)
-				ECHO(!_pref!>>%~2
+			) ELSE (
+				ECHO(!_pref!
 			)
 			)
 		) ELSE (
 		) ELSE (
-			ECHO(!_pref!>>%~2
+			ECHO(!_pref!
 		)
 		)
-	) ELSE (
-		ECHO(!_pref!>>%~2
+		ENDLOCAL
 	)
 	)
-	ENDLOCAL
-)
+)>%~2
 ENDLOCAL
 ENDLOCAL
 DEL /F %1 >nul
 DEL /F %1 >nul
 GOTO :EOF
 GOTO :EOF