@ECHO off ::Set the variables set dataLocation=C:\PervasiveSQLDBData\ set backupLocation=D:\Database_Backup\ set daysToKeepBackups=10 set installLocation=C:\Program Files (x86)\Pervasive Software\PSQL\PBA\BIN\ :::Set the date/time variables ::Time, from http://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script set hour=%time:~0,2% if "%hour:~0,1%" == " " set hour=0%hour:~1,1% set min=%time:~3,2% if "%min:~0,1%" == " " set min=0%min:~1,1% set secs=%time:~6,2% if "%secs:~0,1%" == " " set secs=0%secs:~1,1% ::Date, from http://stackoverflow.com/a/3475477/774359 for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (call :set_date %%i %%j %%k %%l) goto :end_set_date :set_date if "%1:~0,1%" gtr "9" shift for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo,^|date') do (set %%m=%1&set %%n=%2&set %%o=%3) goto :eof :end_set_date ::Create the datetime string and create a folder with that name set datetime=%yy%_%mm%_%dd% %hour%_%min%_%secs% mkdir "%backupLocation%\%datetime%" ::Put the database in Continuous Operations Mode cd %installLocation% pvbackup -on echo. echo Copying files: echo --------------- ::Copy all .mkd files xcopy "%dataLocation%*.mkd" "%backupLocation%%datetime%" /y ::Copy all .ddf files xcopy "%dataLocation%*.ddf" "%backupLocation%%datetime%" /y ::Take the database off of Continuous Operations Mode pvbackup -off echo. echo Deleting files: echo --------------- ::Delete backup folders that are older than 10 days ForFiles /P %backupLocation% /D -%daysToKeepBackups% /C "CMD /C if @ISDIR==TRUE rmdir /Q /S @FILE" ::Alternative: delete folders that aren't named "importantFolder" - useful if you have a ".sync" or ".dropbox" folder used by another program to index the backup folder ::ForFiles /P %backupLocation% /D -%daysToKeepBackups% /C "CMD /C if @ISDIR==TRUE rmdir /Q /S @FILE|find /v /i ""importantFolder"""