@ECHO OFF rem ========================================================================== rem rem Пример запуска: C:\IrbisBak.cmd 1 rem rem - параметр %1==1..6 - Пн..Сб - день недели rem - файл rar.txe должен находится в C:\rar.txe (или изменить в командах запуска) rem - (для каждого дня недели - своё отдельное задание - в планировщике заданий) rem - изменить имена БД ЭК для конкретной библиотеки (у меня: CMPL GLAV NAUKA PERI RDR VUZ) rem - Изменить параметрыы архива в командах 'SET=' rem - запуск ежедневно (по планировщику заданий) каждые 2ч NNN=4 (10:00, 12:00, 14:00, 16:00, 18:00 ) rem - почасовое архивирование критичных БД пользователя занимает == 03...10 мин rem - (CMPL GLAV NAUKA PERI RDR VUZ) - МОИ БД ЭК библиотеки rem - архивирование ВСЕГО каталога IRBIS == 12-15 мин (на Win2008R2) rem - архивирование (обновление архива) привязанных ДОКУМЕНТОВ И ФОТО(БД RDR) запускается отдельно rem - раз в полгода (после удаления студентов и фото) Переархивировать заново rem - файл журнала сообщений - в каталоге запуска ЭТОЙ программы (irbisbak.LOG) 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 IrbisBakStep="неверный параметр запуска - "%1 FOR %%F IN (1 2 3 4 5 6) DO (IF /i %1==%%F GOTO PARAMOK ) GOTO ERR :PARAMOK SET IrbisBakStep="создание локальных переменных" SET CURDATE=%DATE% SET DATESTR=%CURDATE:~6,4%-%CURDATE:~3,2%-%CURDATE:~0,2% SET LOG=%~dpn0.LOG SET RarErrLOG=%~dpn0-RarErr.LOG SET IrbisVersion=IRBIS64-91-d9 SET IrbisDir=C:\IRBIS64 SET IrbisDataDir=C:\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 ECHO STARTED %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% SET IrbisBakStep="создание каталога резервирования" rem ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %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 SET IrbisBakStep="создание копии по cчётчику запуска" FOR /L %%N in (1,1,%NNN%) do IF NOT EXIST %IrbisBakDir%\IRBIS-%%N-%DATESTR%.rar ((SET NNN=%%N) & GOTO HHOk) rem ========================================================================== rem Копирование ВСЕГО каталога IRBIS (работает при NNN+1 запуске) rem и удаление копий критичных БД пользователя rem ========================================================================== :FULL SET IrbisBakStep="архивирование ВСЕГО IRBIS" ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% rem SET IrbisBakStep="Полный архив IRBIS уже существует" rem IF EXIST %IrbisBakDir%\%IrbisVersion%-%DATESTR%.rar GOTO FULLDOC C:\RAR A -U -R -dh -rr -iLog%RarErrLog% -x@%IrbisDocFileList% -x@%IrbisWrkFileList% %IrbisBakDir%\xxxxx-%DATESTR%.rar %IrbisDir%\*.* if %ErrorLevel% NEQ 0 GOTO ERR SET IrbisBakStep="удаление предыдущих копий за день" ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% IF EXIST %IrbisBakDir%\IRBIS* (DEL %IrbisBakDir%\IRBIS* /q) if %ErrorLevel% NEQ 0 GOTO ERR REN %IrbisBakDir%\xxxxx-%DATESTR%.rar %IrbisVersion%-%DATESTR%.rar if %ErrorLevel% NEQ 0 GOTO ERR rem ========================================================================== rem Обновление ДОКУМЕНТОВ И ФОТО IRBIS (работает при NNN+1 запуске) rem %1==6 - Суббота обновление архива 1 раз в неделю rem ========================================================================== :FULLDOC rem if %1 NEQ 6 GOTO END SET IrbisBakStep="архивирование ВСЕХ ДОКУМЕНТОВ IRBIS" ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% rem C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-DOC.rar @%IrbisDocFileList% C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-GLAV-TEXT.rar %IrbisDataDir%\GLAV\TEXT\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-HIST-TEXT.rar %IrbisDataDir%\HIST\TEXT\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-NAUKA-TEXT.rar %IrbisDataDir%\NAUKA\TEXT\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-PERI-TEXT.rar %IrbisDataDir%\PERI\TEXT\*.* C:\RAR A -U -R -dh -rr -iLog%RarErrLog% %IrbisBakDirTXT%\%IrbisVersion%-RDR-FOTO.rar %IrbisDataDir%\RDR\FOTO\*.* if %ErrorLevel% EQU 0 (GOTO END) ELSE (GOTO ERR) rem ========================================================================== rem почасовое копирование критичных БД пользователя rem (CMPL GLAV NAUKA PERI RDR VUZ) rem ========================================================================== :HHOk SET IrbisBakStep="почасовое копирование" ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %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 if %ErrorLevel% NEQ 0 GOTO ERR SET IrbisBakStep="почасовое архивирование" ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% C:\RAR M -R -rr -ilog%RarErrLog% %IrbisBakDir%\IRBIS-%NNN%-%DATESTR%.rar %IrbisBakDirTMP%\*.* if %ErrorLevel% EQU 0 GOTO END rem ========================================================================== :ERR SET >> %LOG% ECHO %DATE% %TIME% ErrorLevel=%ErrorLevel% %IrbisBakStep% :END ECHO ENDED %DATE% %TIME% ErrorLevel=%ErrorLevel% NNN=%NNN% %IrbisBakStep% >> %LOG% ECHO >> LOG TIME /T ENDLOCAL @ECHO ON