Advertisement
Urik_Kane

GTAV_downgrade

Sep 20th, 2019
1,171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 5.05 KB | None | 0 0
  1. @echo off
  2. setLocal EnableDelayedExpansion
  3.  
  4. :: ------------------------ SET VARIABLES (don't touch) ----------------------------
  5. set LauncherFolder="%userprofile%\Documents\Rockstar Games\Launcher"
  6.  
  7. :: ------------------------ USER OPTIONS ----------------------------------------------
  8. :: gamefolder will be replaced by actual game folder. BUT, you can put a completely custom path here, like "F:\my backups\gta_backup" , BUT please use " marks if your path has spaces!
  9. set backupfolder=gamefolder\_backup
  10.  
  11. set use_checksum=true
  12. :: ----------------------------------------------------------------------------------------
  13.  
  14. :Start
  15. :GetGameFolder
  16. if exist %LauncherFolder% (
  17.     cd /d %LauncherFolder%
  18.     if exist launcher.log (
  19.         for /f tokens^=2^ delims^=^" %%i in ('type launcher.log ^|find "GTA5.exe"') do set "exepath=%%i"
  20.         if "!exepath!"=="" (
  21.             for /f "tokens=1 delims=" %%i in ('type launcher.log ^|find "Grand Theft Auto V"') do (
  22.             set "_p=%%i"           
  23.             set "_p=!_p:*Location: =!"
  24.             set gamepath="!_p!"
  25.             set "exepath=!_p!\gta5.exe"
  26.             )
  27.             if "!gamepath!"=="" echo ERROR: COULD NOT DETECT GAMEFOLDER & pause & goto :eof
  28.         ) else (
  29.             set gamepath="!exepath:\GTA5.exe=!"
  30.         )
  31.         if exist !gamepath! ( set "gamefolder=!gamepath!" & echo Detected Game Folder !gamepath! & echo. ) else ( echo ERROR: COULD NOT DETECT GAMEFOLDER & pause & goto :eof )
  32.     )
  33. ) else ( echo Warning: CAN'T FIND LAUNCHER FOLDER %LauncherFolder% & pause & goto :eof )
  34.  
  35. :GetVersion
  36. set exepath2=!exepath:\=\\!
  37. for /f "tokens=*" %%V in ( ' wmic datafile where "name='!exepath2!'" get version ' ) do (
  38.     for /F "delims=" %%A IN ("%%V") do (
  39.         if not "%%V"=="" (
  40.             if not "%%V"=="Version" set "version=%%V"  
  41.         )
  42.     )
  43. )
  44. set "version=%version: =%"
  45. if '!version!'=='' ( echo ERROR: COULD NOT DETECT VERSION & pause & goto :eof ) else ( echo Game Version: %version% )
  46.  
  47. :GetPlatform
  48. cd /d %LauncherFolder%
  49.     if exist launcher.log (
  50.     for /f "tokens=*" %%i in ('type launcher.log ^|find "Running in Steam mode"') do set "Is_Steam=true"
  51.     ) else (
  52.     echo ERROR: CAN'T FIND %cd%\launcher.log
  53. )
  54.  
  55. :SetFileList
  56. if defined is_steam ( set files_tocopy=GTA5.exe,GTAVLauncher.exe,steam_api64.dll,update\update.rpf ) else ( set files_tocopy=GTA5.exe,GTAVLauncher.exe,update\update.rpf )
  57.  
  58. :CheckBackupFolder
  59. set backupfolder=%backupfolder:gamefolder=!gamefolder!%
  60. set backupfolder=%backupfolder:"=%
  61. set backupfolder="%backupfolder%"
  62. if exist %backupfolder% (
  63.     echo. & echo Backup Folder %backupfolder% & echo.
  64.     set bkup_count=0
  65.     set lastbkup_counter=0
  66.     cd /d %backupfolder%
  67.     for /f "tokens=* delims= " %%A in ( ' dir /b /-p /o:-n /t:w *.* ' ) do (
  68.         set "var=" & for /f "delims=.0123456789" %%i in ('echo %%A') do set var=%%i
  69.         if "!var!"=="" (
  70.             set "var="
  71.             set /a bkup_count=!bkup_count!+1
  72.             if !bkup_count!==1 set "last_backup=%%A"
  73.             if !bkup_count!==2 set "prev_backup=%%A"
  74.             if not "!backups!"=="" ( set "backups=!backups!,%%A") else ( set "backups=%%A")
  75.             echo found backup %%A
  76.         )
  77.     )
  78.     if !bkup_count!==0 echo NO BACKUPS HAVE BEEN FOUND. EXITING. & pause & goto :eof
  79.  
  80. ) else ( echo ERROR: CAN'T FIND BACKUPFOLDER & pause & goto :eof )
  81.  
  82.  
  83. :CheckEXE
  84. if %version%==%last_backup% ( set "do_downgrade=true" ) else (
  85.     if %version% GTR %last_backup% ( echo. & echo New version %version% , not yet backed up. Please backup first! & echo. & pause & goto :eof ) else (
  86.         if not exist %backupfolder%\%version% ( echo. & echo Old version %version% , no backup. Please back that up first! & echo. & pause & goto :eof)
  87.     )
  88. )
  89.  
  90. :Prompt
  91. echo.
  92. if defined do_downgrade ( set "msg=Downgrade from %version% to version %prev_backup%" ) else ( set "msg=Re-Update from %version% to version %last_backup%" )
  93. set proceed=
  94. set /p "proceed=%msg% (Y/N)?"
  95. if not "!proceed!"=="" (
  96.     set "proceed=!proceed: =!"
  97.     for /f "delims=yYnN" %%A in ('echo !proceed!') do goto :Prompt
  98. )
  99. if /i !proceed!==y goto Process
  100. if /i !proceed!==n goto :eof
  101. goto :Prompt
  102.  
  103. :Process
  104. if defined do_downgrade ( CALL :IterateFiles %prev_backup%) else ( CALL :IterateFiles %last_backup%)
  105.  
  106. :Report
  107. if not "!copycount!"==""  (
  108. echo.
  109. echo ---------------------------------------------------------------------------------------
  110. echo  Copied !copycount! files: !copiedfiles!
  111. echo ---------------------------------------------------------------------------------------
  112. )
  113. if not "!failcount!"==""  (
  114. echo.
  115. echo ---------------------------------------------------------------------------------------
  116. echo  FAILED TO COPY !failcount! files: !failedfiles!
  117. echo ---------------------------------------------------------------------------------------
  118. )
  119. echo.
  120. pause
  121. goto :eof
  122.  
  123.  
  124. :IterateFiles
  125. echo.
  126. for %%F in (%files_tocopy%) do (
  127.     if %use_checksum%==true (
  128.     for /f "delims=" %%i in ('certutil -v -hashfile %gamefolder%\%%F MD5 ^| find /i /v "md5" ^| find /i /v "certutil"') do set "hash1=%%i"
  129.     for /f "delims=" %%i in ('certutil -v -hashfile %backupfolder%\%1\%%F MD5 ^| find /i /v "md5" ^| find /i /v "certutil"') do set "hash2=%%i"
  130.     if not !hash1!==!hash2! CALL :CopyFileFromBackup %1 %%F
  131.     ) else ( CALL :CopyFileFromBackup %1 %%F)
  132. )
  133. goto :eof
  134.  
  135. :CopyFileFromBackup
  136. echo. & echo %2
  137. copy %backupfolder%\%1\%2 %gamefolder%\%2
  138. if "!errorlevel!"=="0" ( CALL :LogSuccess %2) else ( CALL :LogFailure %2)
  139. goto :eof
  140.  
  141. :LogFailure
  142. if "!failcount!"=="" ( set "failcount=1" ) else ( set /a "failcount=!failcount!+1" )
  143. if "!failedfiles!"=="" ( set "failedfiles=%1" ) else ( set "failedfiles=!failedfiles!, %1" )
  144. goto :eof
  145.  
  146. :LogSuccess
  147. if "!copycount!"=="" ( set "copycount=1" ) else ( set /a "copycount=!copycount!+1" )
  148. if "!copiedfiles!"=="" ( set "copiedfiles=%1" ) else ( set "copiedfiles=!copiedfiles!, %1" )
  149. goto :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement