trev0rdan5

Backup Launchbox

Jul 3rd, 2025
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.15 KB | Gaming | 0 0
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. :: === Configuration ===
  5. set "ZIP_PATH=C:\Program Files\7-Zip\7z.exe"
  6. set "BACKUP_SOURCE=C:\LaunchBox"
  7. set "BACKUP_DEST=C:\Backups"
  8. set "LOG_DIR=C:\Backups\backup_launchbox"
  9. set "LOG_FILE=%LOG_DIR%\backup_launchbox.log"
  10. set "LOG_MAX_SIZE=102400"
  11.  
  12. :: === Generate Reliable Date/Time ===
  13. for /f %%A in ('wmic os get LocalDateTime ^| find "."') do set DATETIME=%%A
  14. set "DATESTAMP=%DATETIME:~0,8%"
  15. set "TIMESTAMP=%DATETIME:~8,6%"
  16. set "ARCHIVE_NAME=launchbox_backup_%DATESTAMP%.7z"
  17.  
  18. :: Format timestamp for logs
  19. set "YYYY=%DATESTAMP:~0,4%"
  20. set "MM=%DATESTAMP:~4,2%"
  21. set "DD=%DATESTAMP:~6,2%"
  22. set "HH=%TIMESTAMP:~0,2%"
  23. set "MI=%TIMESTAMP:~2,2%"
  24. set "SS=%TIMESTAMP:~4,2%"
  25. set "LOG_TS=%YYYY%-%MM%-%DD% %HH%:%MI%:%SS%"
  26.  
  27. :: === Ensure Folders Exist ===
  28. if not exist "%BACKUP_DEST%" mkdir "%BACKUP_DEST%"
  29. if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
  30.  
  31. :: === Rotate Log if Too Big ===
  32. if exist "%LOG_FILE%" (
  33.     for %%A in ("%LOG_FILE%") do set LOG_SIZE=%%~zA
  34.     if !LOG_SIZE! GEQ %LOG_MAX_SIZE% (
  35.         ren "%LOG_FILE%" "backup_launchbox_%DATESTAMP%_%TIMESTAMP%.log"
  36.     )
  37. )
  38.  
  39. :: === Delete Existing Backup(s) and Log Each Deletion ===
  40. for %%F in ("%BACKUP_DEST%\launchbox_backup_*.7z") do (
  41.     echo [%LOG_TS%] Deleted: %%~nxF >> "%LOG_FILE%"
  42.     del "%%F"
  43. )
  44.  
  45. :: === Log Backup Start ===
  46. echo [%LOG_TS%] Backup START: %ARCHIVE_NAME% >> "%LOG_FILE%"
  47.  
  48. :: === Run 7-Zip Backup ===
  49. "%ZIP_PATH%" a -t7z "%BACKUP_DEST%\%ARCHIVE_NAME%" "%BACKUP_SOURCE%" -mx=9 >nul
  50.  
  51. :: === Generate New Timestamp for Completion Log ===
  52. for /f %%A in ('wmic os get LocalDateTime ^| find "."') do set ENDTIME=%%A
  53. set "END_DATESTAMP=%ENDTIME:~0,8%"
  54. set "END_TIMESTAMP=%ENDTIME:~8,6%"
  55. set "YYYY=%END_DATESTAMP:~0,4%"
  56. set "MM=%END_DATESTAMP:~4,2%"
  57. set "DD=%END_DATESTAMP:~6,2%"
  58. set "HH=%END_TIMESTAMP:~0,2%"
  59. set "MI=%END_TIMESTAMP:~2,2%"
  60. set "SS=%END_TIMESTAMP:~4,2%"
  61. set "LOG_TS_END=%YYYY%-%MM%-%DD% %HH%:%MI%:%SS%"
  62.  
  63. :: === Log Result ===
  64. if !ERRORLEVEL! EQU 0 (
  65.     echo [!LOG_TS_END!] Backup SUCCESS: %ARCHIVE_NAME% >> "%LOG_FILE%"
  66. ) else (
  67.     echo [!LOG_TS_END!] Backup FAILED: %ARCHIVE_NAME% >> "%LOG_FILE%"
  68. )
  69.  
  70. endlocal
  71.  
Advertisement
Add Comment
Please, Sign In to add comment