Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setlocal enabledelayedexpansion
- :: === Configuration ===
- set "ZIP_PATH=C:\Program Files\7-Zip\7z.exe"
- set "BACKUP_SOURCE=C:\LaunchBox"
- set "BACKUP_DEST=C:\Backups"
- set "LOG_DIR=C:\Backups\backup_launchbox"
- set "LOG_FILE=%LOG_DIR%\backup_launchbox.log"
- set "LOG_MAX_SIZE=102400"
- :: === Generate Reliable Date/Time ===
- for /f %%A in ('wmic os get LocalDateTime ^| find "."') do set DATETIME=%%A
- set "DATESTAMP=%DATETIME:~0,8%"
- set "TIMESTAMP=%DATETIME:~8,6%"
- set "ARCHIVE_NAME=launchbox_backup_%DATESTAMP%.7z"
- :: Format timestamp for logs
- set "YYYY=%DATESTAMP:~0,4%"
- set "MM=%DATESTAMP:~4,2%"
- set "DD=%DATESTAMP:~6,2%"
- set "HH=%TIMESTAMP:~0,2%"
- set "MI=%TIMESTAMP:~2,2%"
- set "SS=%TIMESTAMP:~4,2%"
- set "LOG_TS=%YYYY%-%MM%-%DD% %HH%:%MI%:%SS%"
- :: === Ensure Folders Exist ===
- if not exist "%BACKUP_DEST%" mkdir "%BACKUP_DEST%"
- if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
- :: === Rotate Log if Too Big ===
- if exist "%LOG_FILE%" (
- for %%A in ("%LOG_FILE%") do set LOG_SIZE=%%~zA
- if !LOG_SIZE! GEQ %LOG_MAX_SIZE% (
- ren "%LOG_FILE%" "backup_launchbox_%DATESTAMP%_%TIMESTAMP%.log"
- )
- )
- :: === Delete Existing Backup(s) and Log Each Deletion ===
- for %%F in ("%BACKUP_DEST%\launchbox_backup_*.7z") do (
- echo [%LOG_TS%] Deleted: %%~nxF >> "%LOG_FILE%"
- del "%%F"
- )
- :: === Log Backup Start ===
- echo [%LOG_TS%] Backup START: %ARCHIVE_NAME% >> "%LOG_FILE%"
- :: === Run 7-Zip Backup ===
- "%ZIP_PATH%" a -t7z "%BACKUP_DEST%\%ARCHIVE_NAME%" "%BACKUP_SOURCE%" -mx=9 >nul
- :: === Generate New Timestamp for Completion Log ===
- for /f %%A in ('wmic os get LocalDateTime ^| find "."') do set ENDTIME=%%A
- set "END_DATESTAMP=%ENDTIME:~0,8%"
- set "END_TIMESTAMP=%ENDTIME:~8,6%"
- set "YYYY=%END_DATESTAMP:~0,4%"
- set "MM=%END_DATESTAMP:~4,2%"
- set "DD=%END_DATESTAMP:~6,2%"
- set "HH=%END_TIMESTAMP:~0,2%"
- set "MI=%END_TIMESTAMP:~2,2%"
- set "SS=%END_TIMESTAMP:~4,2%"
- set "LOG_TS_END=%YYYY%-%MM%-%DD% %HH%:%MI%:%SS%"
- :: === Log Result ===
- if !ERRORLEVEL! EQU 0 (
- echo [!LOG_TS_END!] Backup SUCCESS: %ARCHIVE_NAME% >> "%LOG_FILE%"
- ) else (
- echo [!LOG_TS_END!] Backup FAILED: %ARCHIVE_NAME% >> "%LOG_FILE%"
- )
- endlocal
Advertisement
Add Comment
Please, Sign In to add comment