D:\MDaemon\app\MDLaunch.exe /stop
E:
cd\
md “%date%”
cd “%date%”
echo Zálohování serveru Mail na Windows zahájeno v: %date%_%time% >>BackupLog.txt
C:\Windows\system32\NTBACKUP.EXE backup “@C:\scripts\WinBackup.bks” /n “MAILBACKUP” /d “MAILBACKUP %date% %time%” /v:yes /r:no /rs:no /hc:off /m normal /j “Denní záloha serveru Mail” /l:s /f “E:\%date%\MAILBACKUP.bkf”
echo Zálohování serveru Mail na Windows dokončeno v: %date%_%time% >>BackupLog.txt
D:\MDaemon\app\MDLaunch.exe
Пример 2: @echo off SetLocal EnableDelayedExpansion :: Параметры скрипта: :: SOURCE - путь к сетевому ресурсу или имя BKS-файла :: FULLDEPTH - глубина отката в полных архивах :: INCRDEPTH - инкрементных архивов на один полный SET SOURCE=\\SERVER\$DIR1 SET FULLDEPTH=5 SET INCRDEPTH=6 Call :CallEx GetState Call :CallEx DelLogs Call :CallEx StartCMD If %ERRORLEVEL% EQU 0 ( Call :CallEx NewState Call :CallEx SetState Call :CallEx DelBkf) Exit :: Запуск процесса NTBackup :StartCMD Set $CMD=ntbackup backup %SOURCE% /f "%~dpn0.0.bkf" /l:f /m incremental /a If %INCREMENT% EQU 0 Set $CMD=ntbackup backup %SOURCE% /f "%~dpn0.bkf" /l:f Start /WAIT %$CMD% If %ERRORLEVEL% NEQ 0 ( Call :CallEx CopyLog Echo При выполнении резервного копирования возникли ошибки, Echo Смотрите журнал сообщений: "%~n0.log". Exit /B 1) Call :CallEx CopyLog If Exist %~n0.bkf ( If Exist %~n0.0.bkf Call :CallEx ShiftBkf 0 1 Ren %~n0.bkf %~n0.0.bkf If %ERRORLEVEL% NEQ 0 Exit /B 1 If Exist %~n0.log Ren %~n0.log %~n0.0.log If %ERRORLEVEL% NEQ 0 Exit /B 2) GoTo :EOF :: Чистка старых логов :DelLogs Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data Del /Q /F "%$BakData%\backup*.log" >nul If %ERRORLEVEL% NEQ 0 Exit /B 1 GoTo :EOF :CopyLog Set $BakData=%APPDATA:~0,-17%\Local Settings\Application Data\Microsoft\Windows NT\NTbackup\Data If %INCREMENT% EQU 0 ( Copy "%$BakData%\backup*.log" %~n0.log >nul ) Else ( Copy /B %~n0.0.log+"%$BakData%\backup*.log" %~n0.0.log >nul ) If %ERRORLEVEL% NEQ 0 Exit /B 1 GoTo :EOF :: Расчет нового состояния :NewState Set /A INCREMENT=%INCREMENT%+1 If %INCREMENT% GTR %INCRDEPTH% Set INCREMENT=0 GoTo :EOF :: Чтение параметров :GetState For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 If "%INCREMENT%"=="" ( Echo INCREMENT=0 >%~n0.ini For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 If Not "!INCREMENT!"=="0" ( Set INCREMENT=0 Exit /B 2 ) ) GoTo :EOF :: Сохранение параметров :SetState Set $bak=%INCREMENT% Echo INCREMENT=%INCREMENT% >%~n0.ini For /f "Delims=" %%i in (%~n0.ini) Do Set /A %%i+0 If Not "%INCREMENT%"=="%$bak%" Exit /B 1 GoTo :EOF :: Переименование архивов :ShiftBkf If Exist %~n0.%2.bkf ( Set /A $idx=%2+1 Call :ShiftBkf %2 !$idx! If !ERRORLEVEL! NEQ 0 Exit /B 1 ) Ren %~n0.%1.bkf %~n0.%2.bkf If %ERRORLEVEL% NEQ 0 Exit /B 1 If Exist %~n0.%2.log Del %~n0.%2.log If %ERRORLEVEL% NEQ 0 Exit /B 2 If Exist %~n0.%1.log Ren %~n0.%1.log %~n0.%2.log If %ERRORLEVEL% NEQ 0 Exit /B 2 GoTo :EOF :: Удаление старых архивов :DelBkf For /f "tokens=1,2 delims=." %%i in ('Dir /B %~n0.?.bkf^|FindStr /REC:"\.[0-9]\.bkf"') Do ( If %%j GEQ %FULLDEPTH% ( Del /F/Q %%i.%%j.log Del /F/Q %%i.%%j.bkf) If !ERRORLEVEL! NEQ 0 Exit /B 1) GoTo :EOF :: Вызов процедур с контролем ошибок :CallEx Call :%* If %ERRORLEVEL% EQU 1 ( Echo. Echo Модуль "%1" вызвал исключение, работа скрипта прервана! Exit ) If %ERRORLEVEL% EQU 2 Echo Модуль "%1" вызвал некритичную ошибку, работа скрипта продолжена. GoTo :EOF подробней: http://support.microsoft.com/kb/814583/ru
