@ECHO OFF rem ========================================================================== rem rem Пример запуска: C:\IrbisBak-v64-19.cmd 1 rem rem - параметр %1==1..6 - Пн..Сб - день недели rem - (для каждого дня недели - своё отдельное задание) rem - запуск ежедневно каждые 2ч NNN=4 (10:00, 12:00, 14:00, 16:00, 18:00 ) rem - почасовое архивирование критичных БД пользователя == 03...07 мин rem - (CMPL GLAV NAUKA PERI RDR VUZ) rem - архивирование ВСЕГО каталога IRBIS == 12 мин rem - %NNN%=5(18:00 - Полный архив 01 час 10 мин Обновление - 10 мин) rem - раз в полгода (после удаления студентов и фото) Переархивировать заново rem rem ======= Коды %ERRORLEVEL% для xcopy, copy ================================ rem rem 0 успешное копирование rem 1 файлы для копирования не найдены rem 2 прервано по Ctrl-C rem 4 Недостаточно места в памяти или на диске, rem введено неверное имя диска или неверный синтаксис вызова команды rem 5 Диск защищен от записи rem rem ======= Коды %ERRORLEVEL% для RAR ======================================= rem rem 255 Операция была прервана пользователем. rem 9 Произошла ошибка при создании файла. rem 8 Недостаточно памяти для выполнения операции. rem 7 Допущена ошибка при указании команды/параметра в командной строке. rem 6 Произошла ошибка открытия файла. rem 5 Произошла ошибка записи на диск. rem 4 Предпринята попытка изменить архив, ранее заблокированный командой 'k' или ключом '-k'. rem 3 Во время распаковки обнаружена ошибка CRC. rem 2 ФАТАЛЬНАЯ ОШИБКА Произошла критическая ошибка. rem 1 ПРЕДУПРЕЖДЕНИЕ Произошла некритическая ошибка. rem 0 УСПЕШНОЕ ЗАВЕРШЕНИЕ Работа завершена без ошибок. rem rem ========================================================================== TIME /T SETLOCAL ENABLEEXTENSIONS SET NNN=4 SET LOG=%~dpn0.LOG SET IrbisBakStep=создание локальных переменных ECHO STARTED %DATE% %TIME% %IrbisBakStep% >> %LOG% SET CURDATE=%DATE% SET DATESTR=%CURDATE:~6,4%-%CURDATE:~3,2%-%CURDATE:~0,2% SET RarErrLOG=%~dpn0-RarErr.LOG SET IrbisVersion=IRBIS64-19-d5 SET IrbisDir=C:\IRBIS64-19\IRBIS64 SET IrbisDataDir=C:\IRBIS64-19\IRBIS64\DATAI SET IrbisBakDir=D:\IRBIS64.BAK\%1 SET IrbisBakDirTXT=D:\IRBIS64.BAK\TXT SET IrbisBakDirTMP=D:\IRBIS64.BAK\TMP SET IrbisDocFileList=%~dp0IrbisBakDoc.lst SET IrbisWrkFileList=%~dp0IrbisWrk.lst if %ErrorLevel% NEQ 0 GOTO ERR SET IrbisBakStep=неверный параметр запуска - %1 FOR %%F IN (1 2 3 4 5 6) DO (IF /i %1==%%F GOTO PARAMOK ) GOTO ERR :PARAMOK rem ========================================================================== SET IrbisBakStep=проверка/создание каталога резервирования ECHO %DATE% %TIME% %IrbisBakStep% >> %LOG% IF NOT EXIST %IrbisBakDir% ((MD %IrbisBakDir%) & (COPY %0 %IrbisBakDir%)) IF NOT EXIST %IrbisBakDirTXT% (MD %IrbisBakDirTXT%) IF NOT EXIST %IrbisBakDirTMP% (MD %IrbisBakDirTMP%) if %ErrorLevel% NEQ 0 GOTO ERR rem ========================================================================== SET IrbisBakStep=создание копии по cчётчику запуска ECHO %DATE% %TIME% %IrbisBakStep% >> %LOG% FOR /L %%N in (1,1,%NNN%) do IF NOT EXIST %IrbisBakDir%\IRBIS-%%N*.rar ((SET NNN=%%N) & GOTO HHOk) SET IrbisBakStep=проверка лишнего запуска (полный архив уже создан) IF EXIST %IrbisBakDir%\%IrbisVersion%-%DATESTR%.rar GOTO END SET IrbisBakStep=удаление предыдущих копий IF NOT EXIST %IrbisBakDir%\%IrbisVersion%*.rar GOTO FULL ECHO %DATE% %TIME% %IrbisBakStep% >> %LOG% SET NNN=1 DEL %IrbisBakDir%\IRBIS* /q if %ErrorLevel% NEQ 0 GOTO ERR rem ========================================================================== rem почасовое копирование критичных БД пользователя rem (CMPL GLAV NAUKA PERI RDR VUZ) rem ========================================================================== :HHOk SET IrbisBakStep=почасовое копирование ECHO %NNN% %DATE% %TIME% %IrbisBakStep% >> %LOG% DEL %IrbisBakDirTMP%\*.* /q RD %IrbisBakDirTMP%\ /s /q FOR %%i IN (CMPL GLAV NAUKA PERI RDR VUZ) DO XCOPY %IrbisDataDir%\%%i\%%i.* %IrbisBakDirTMP%\%%i\ /s /e /q /z /y rem if %ErrorLevel% NEQ 0 GOTO ERR SET IrbisBakStep=почасовое архивирование ECHO %NNN% %DATE% %TIME% %IrbisBakStep% >> %LOG% C:\RAR M -R -dh -rr -ilog%RarErrLog% %IrbisBakDir%\IRBIS-%NNN%-%DATESTR%.rar %IrbisBakDirTMP%\*.* if %ErrorLevel% EQU 0 (GOTO END) ELSE (GOTO ERR) rem ========================================================================== rem Копирование ВСЕГО каталога IRBIS (работает при NNN+1 запуске) rem ========================================================================== :FULL SET NNN=5 SET IrbisBakStep=архивирование ВСЕГО IRBIS ECHO %NNN% %DATE% %TIME% %IrbisBakStep% >> %LOG% C:\RAR A -U -R -dh -rr -iLog%RarErrLog% -x@%IrbisDocFileList% -x@%IrbisWrkFileList% %IrbisBakDir%\%IrbisVersion%-%DATESTR%.rar %IrbisDir%\*.* if %ErrorLevel% NEQ 0 GOTO ERR rem ========================================================================== rem Обновление ДОКУМЕНТОВ И ФОТО IRBIS (работает при NNN+1 запуске) rem после архивирования всего IRBIS rem ========================================================================== :FULLDOC SET IrbisBakStep=архивирование ВСЕХ ДОКУМЕНТОВ IRBIS ECHO %NNN% %DATE% %TIME% %IrbisBakStep% >> %LOG% C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-GLAV-TEXT.rar %IrbisDataDir%\GLAV\TEXTS\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-HIST-TEXT.rar %IrbisDataDir%\HIST\TEXTS\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-NAUKA-TEXT.rar %IrbisDataDir%\NAUKA\TEXTS\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-PERI-TEXT.rar %IrbisDataDir%\PERI\TEXTS\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-RDR-FOTO.rar %IrbisDataDir%\RDR\FOTO\*.* rem C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-RDRZ-FOTO.rar %IrbisDataDir%\RDRZ\FOTO\*.* rem C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-DIPLOM-TEXT.rar %IrbisDataDir%\DIPLOM\TEXT\*.* if %ErrorLevel% EQU 0 (GOTO END) ELSE (GOTO ERR) rem ========================================================================== :ERR rem SET >> %LOG% ECHO ERROR %NNN% %DATE% %TIME% %IrbisBakStep% ErrorLevel=%ErrorLevel% >> %LOG% ECHO ERROR %NNN% %DATE% %TIME% %IrbisBakStep% ErrorLevel=%ErrorLevel% :END ECHO END %NNN% %DATE% %TIME% %IrbisBakStep% >> %LOG% IF /i %NNN% EQU 5 (ECHO. >> %LOG%) TIME /T ENDLOCAL @ECHO ON EXIT /b