@echo off
set fb=.
set dtbase_ext=gdb
set backup_ext=gbk
set dfixed_ext=recovered

if .%1==.restore goto restore
for %%f in (*.%backup_ext%) do call %0 restore %%~nf
goto exit

:restore
set src=%2.%dtbase_ext%
set bak=%2.%backup_ext%
set dst=%2.%dfixed_ext%

echo Восстановление %bak%...

if not exist %dst% goto step1
del %dst% > nul
if exist %dst% goto exit

:step1
if not exist %src% goto step2
echo - отключение базы
%fb%\gfix.exe -shut -force 0 %src% -user sysdba -pass masterkey

:step2
echo - восстановление в %dst%
%fb%\gbak.exe -r -rep %bak% %dst% -user sysdba -pass masterkey

if not exist %src% goto step3
echo - подключение базы
%fb%\gfix.exe -online %src% -user sysdba -pass masterkey

:step3
if not exist %dst% goto exit
echo - создание %src%
copy %dst% %src%  > nul
del %dst%  > nul

:exit
echo.
