среда, 7 марта 2012 г.

BAT-файл, который распознает версию Firebird, на которой создан бэкап

rem mv_fb_restore.bat

@echo off
SETLOCAL

rem version 4 (07.03.2012)

rem Порт службы Firebird 1.5:
set PORT_FB15=3050
rem Порт службы Firebird 2.1:
set PORT_FB21=3021
rem Порт службы Firebird 2.5:
set PORT_FB25=3025

set applog=mv_fb_restore.log

rem Раскладываем дату на составные (ден, месяц, год):
set daDD=%DATE:~0,2%
set daMM=%DATE:~3,2%
set daYYYY=%DATE:~-4%
rem В переменной времени заменяем пробел (который ставиться для числа часов с одним знаком) нулём:

set datime=%time: =0%

rem Раскладываем время на составные (часы, минуты, секунды):
set daho=%datime:~0,2%
set dami=%datime:~3,2%
set dass=%datime:~6,2%
rem Складываем разложенные составные в необходимой форме:
set daDATE=%daYYYY%%daMM%%daDD%_%daho%%dami%%dass%

rem Защита от некорректного запуска:
if %1s==s goto daErrSyntax
if NOT EXIST %1 goto daErrFileExist
prompt run:

set daFile=%1
set daFile=%daFile:~,-4%

rem Службы Firebird должны быть запущены на разных портах (в данном примере, это службы 3050, 3021, 3025)
title RESTORE is running
rem ####### RESTORE FB 1.5
set gbaklog=LOG-RESTORE_FB15_%daDATE%.log
echo %DATE% %TIME% - Firebird 1.5 base restore started with source file %1>>%applog%
c:\Firebird_1_5\bin\gbak.exe -user SYSDBA -password masterkey -R -c -V -P 4096 -Y %gbaklog% %1 localhost/%PORT_FB15%:%CD%\R_%daFile%_FB15.fdb
echo %DATE% %TIME% - Firebird 1.5 base restore complete (status %errorlevel%)>>%applog%

rem АНАЛИЗ ЛОГА
echo %DATE% %TIME% - log_analize start>>%applog%
FOR /F "skip=1 tokens=1 delims=zzz" %%a in (%gbaklog%) do (IF "%%a"=="gbak: finishing, closing, and going home" (goto end) ELSE (IF "%%a"=="gbak: ERROR: Expected backup version 1, 2, or 3. Found 8" (goto fb21_blk) ELSE (IF "%%a"=="gbak: ERROR: Expected backup version 1, 2, or 3. Found 9" (goto fb25_blk))))

:fb21_blk
set gbaklog=LOG-RESTORE_FB21_%daDATE%.log
echo %DATE% %TIME% - Firebird 2.1 base restore started with source file %1>>%applog%
c:\Firebird_2_1\bin\gbak.exe -user SYSDBA -password masterkey -R -c -V -P 4096 -Y %gbaklog% %1 localhost/%PORT_FB21%:%CD%\R_%daFile%_FB21.fdb
echo %DATE% %TIME% - Firebird 2.1 base restore complete>>%applog%
goto end

:fb25_blk
set gbaklog=LOG-RESTORE_FB25_%daDATE%.log
echo %DATE% %TIME% - Firebird 2.5 base restore started with source file %1>>%applog%
c:\Firebird_2_5\bin\gbak.exe -user SYSDBA -password masterkey -R -c -V -P 4096 -Y %gbaklog% %1 localhost/%PORT_FB25%:%CD%\R_%daFile%_FB25.fdb
echo %DATE% %TIME% - Firebird 2.5 base restore complete>>%applog%
goto end

:daErrSyntax
echo Не указан backup-файл.
echo Запускать нужно так:
echo mv_fb_restore.bat ПолноеИмяБэкапа
goto exit
:daErrFileExist
echo Файл %1 не найден. Проверьте правильность написания имени файла.
goto exit

:end
title RESTORE is complete
start notepad %applog%
start notepad %gbaklog%
:exit
endlocal
pause

Комментариев нет:

Архив