@echo off setlocal enabledelayedexpansion set BACKUP=D:\backup set TMP=D:\QB_TMP set SRC=SharedFiles\Quickbooks DATA for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set DT=%%i set ZIP=%BACKUP%\backup_%DT%.zip if not exist "%TMP%" mkdir "%TMP%" if not exist "%BACKUP%" mkdir "%BACKUP%" echo ===================================== echo 1. Create VSS snapshot echo ===================================== ( echo SET CONTEXT PERSISTENT NOWRITERS echo ADD VOLUME D: ALIAS QBVOL echo CREATE echo EXPOSE %%QBVol%% X: ) > "%TMP%\vss.txt" diskshadow /s "%TMP%\vss.txt" echo ===================================== echo 2. Copy from VSS (X:) echo ===================================== robocopy "X:\%SRC%" "%TMP%" *.qbw* /R:1 /W:1 echo ===================================== echo 3. Remove snapshot (safe) echo ===================================== echo DELETE SHADOWS ALL > "%TMP%\vss_del.txt" diskshadow /s "%TMP%\vss_del.txt" echo ===================================== echo 4. Compress with PowerShell echo ===================================== powershell -NoProfile -Command ^ "Compress-Archive -Path '%TMP%\*' -DestinationPath '%ZIP%' -Force" echo ===================================== echo 5. Cleanup temp echo ===================================== rmdir /s /q "%TMP%" echo ===================================== echo 6. Keep last 10 backups echo ===================================== cd /d "%BACKUP%" for /f "skip=10 delims=" %%f in ('dir backup_*.zip /b /o-d') do ( del "%%f" ) echo DONE endlocal