{ Setup databases to backup in procedure SCInitBackupInfo. Example: SCAddBackupInfo('pEmp', 'C:\Temp\Emp\', 'Employee'); Example: SCAddBackupInfo('pNW' , 'C:\Temp\NW\' , 'NW' ); } const DELETE_BACKUPS = False; // Enable this if you wish to delete backup. BACK_LIFE = 60;// Days BACKUP_EXT = '.backup'; type TBackupInfoRec = record FDBAlias : string; FBackupPath : string; FBackupFile : string; end; TBackupInfoArray = array of TBackupInfoRec; var FBackupInfo : TBackupInfoArray; lBackupPath : string; lBackupFile : string; procedure SCAddBackupInfo(const ADBAlias, ABackupPath, ABackupFile : string); var lLen : Integer; begin lLen := Length(FBackupInfo); SetLength(FBackupInfo, lLen + 1); FBackupInfo[lLen].FDBAlias := ADBAlias; FBackupInfo[lLen].FBackupPath := ABackupPath; FBackupInfo[lLen].FBackupFile := ABackupFile; end; procedure SCInitBackupInfo; begin { Add databases to backup in following format. Example: SCAddBackupInfo('pEmp', 'C:\Temp\Emp\', 'Employee'); Example: SCAddBackupInfo('pNW' , 'C:\Temp\NW\' , 'NW' ); } end; procedure SCDeleteOldBackups; var lDirToDelete : string; begin lDirToDelete := lBackupPath + FormatDateTime('yyyymmdd', Date - BACK_LIFE) + '\'; // There should only be one file in this folder. if (DirectoryExists(lDirToDelete)) then begin DeleteFile(lDirToDelete + lBackupFile); RemoveDir(lDirToDelete); end; end; var lNewBackupDir : string; i : Integer; begin SCInitBackupInfo; for i := Low(FBackupInfo) to High(FBackupInfo) do begin lBackupPath := FBackupInfo[i].FBackupPath; lBackupFile := FBackupInfo[i].FBackupFile + BACKUP_EXT; if (DELETE_BACKUPS) then SCDeleteOldBackups; lNewBackupDir := lBackupPath + FormatDateTime('yyyymmdd', Date) + '\'; ForceDirectories(lNewBackupDir); // Exit if backup file already exists. if (FileExists(lNewBackupDir + lBackupFile)) then Continue; RunCmd('backup ' + FBackupInfo[i].FDBAlias + ' to "' + lNewBackupDir + lBackupFile + '"'); end; end.