Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setLocal EnableDelayedExpansion
- :: ------------------------ SET VARIABLES (don't touch) ----------------------------
- set LauncherFolder="%userprofile%\Documents\Rockstar Games\Launcher"
- :: ------------------------ USER OPTIONS ----------------------------------------------
- :: 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!
- set backupfolder=gamefolder\_backup
- :: open backup folder in explorer once finished
- set open_explorer_window=true
- :: ----------------------------------------------------------------------------------------
- :Start
- :GetGameFolder
- if exist %LauncherFolder% (
- cd /d %LauncherFolder%
- for /f tokens^=2^ delims^=^" %%i in ('type launcher.log ^|find "GTA5.exe"') do set "exepath=%%i"
- if "!exepath!"=="" ( echo ERROR: COULD NOT DETECT GAMEFOLDER & pause & goto :eof )
- set gamepath="!exepath:\GTA5.exe=!"
- if exist !gamepath! ( set "gamefolder=!gamepath!" ) else ( echo ERROR: COULD NOT DETECT GAMEFOLDER & pause & goto :eof )
- echo Detected Game Folder !gamepath! & echo.
- ) else ( echo Warning: CAN'T FIND LAUNCHER FOLDER %LauncherFolder% & pause & goto :eof )
- :GetVersion
- set exepath2=!exepath:\=\\!
- for /f "tokens=*" %%V in ( ' wmic datafile where "name='!exepath2!'" get version ' ) do (
- for /F "delims=" %%A IN ("%%V") do (
- if not "%%V"=="" (
- if not "%%V"=="Version" set "version=%%V"
- )
- )
- )
- set "version=%version: =%"
- if '!version!'=='' ( echo ERROR: COULD NOT DETECT VERSION & pause & goto :eof ) else ( echo Game Version: %version% )
- :GetPlatform
- cd /d %LauncherFolder%
- if exist launcher.log (
- for /f "tokens=*" %%i in ('type launcher.log ^|find "Running in Steam mode"') do set "Is_Steam=true"
- ) else (
- echo ERROR: CAN'T FIND %cd%\launcher.log
- )
- :SetFileList
- 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 )
- :SetBackupFolder
- set backupfolder=%backupfolder:gamefolder=!gamefolder!%
- set backupfolder=%backupfolder:"=%
- set backupfolder="%backupfolder%\%version%"
- if NOT exist %backupfolder% ( mkdir %backupfolder% || ( CALL :ReportMkDirFailure %backupfolder% & pause & goto :eof ) )
- echo Backup Folder %backupfolder% & echo.
- :IterateFiles
- set copycount=0
- set failcount=0
- for %%F in (%files_tocopy%) do ( if exist %backupfolder%\%%F ( CALL :AlreadyBackedUp %%F ) else ( CALL :CopyFile %%F ) )
- :Finish
- CALL :ReportALL
- echo.
- pause
- if %open_explorer_window%==true explorer %backupfolder%
- goto :eof
- :: --------------------------------------------------------------------------------------------------------------------------
- :CopyFile
- xcopy /Y %gamefolder%\%1 %backupfolder%\%1*
- if !errorlevel!==0 ( CALL :LogSuccess %1 ) else ( CALL :LogFailure %1 )
- goto :eof
- :AlreadyBackedUp
- echo %1 - already backed up
- goto :eof
- :LogFailure
- if "!failedfiles!"=="" ( set "failedfiles=%1" ) else ( set "failedfiles=!failedfiles!, %1" )
- set /a "failcount=!failcount!+1"
- goto :eof
- :LogSuccess
- if "!copiedfiles!"=="" ( set "copiedfiles=%1" ) else ( set "copiedfiles=!copiedfiles!, %1" )
- set /a "copycount=!copycount!+1"
- goto :eof
- :ReportALL
- CALL :ReportSuccess
- CALL :ReportFailure
- goto :eof
- :ReportMkDirFailure
- echo ---------------------------------------------------------------------------------------
- echo ERROR
- echo CAN'T CREATE FOLDER %1
- echo CHECK PERMISSIONS
- echo ---------------------------------------------------------------------------------------
- goto :eof
- :ReportFailure
- if %failcount% GTR 0 (
- if %failcount% GTR 1 (set filesplural=files) else (set filesplural=file)
- echo ------------------------------------------------------------------------
- echo FAILED TO COPY %failcount% !filesplural!: !failedfiles!
- echo ------------------------------------------------------------------------
- )
- set failcount=0
- set failedfiles=
- goto :eof
- :ReportSuccess
- if %copycount% GTR 0 (
- if %copycount% GTR 1 (set filesplural=files) else (set filesplural=file)
- echo ------------------------------------------------------------------------
- echo %copycount% !filesplural! copied: !copiedfiles!
- echo ------------------------------------------------------------------------
- )
- set copycount=0
- set copiedfiles=
- goto :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement