Массовое восстановление информационных баз из бэкапов




CMD-файл для создания файловых информационных баз из файлов выгрузки (.dt)

Время от времени в своей работе я встречаюсь с необходимостью восстановить сразу несколько файловых информационных баз из выгрузок. Как правило, необходимость эта возникает, когда у пользователя произошли непонятные изменения и требуется выяснить когда это изменение произошло. Или найти копию базы в которой «все правильно».

Вручную восстанавливать dtшники долго и муторно, поэтому возникла мысль автоматизировать данный процесс.

Собственно, в один каталог складываются dt-файлы и CMD-файл. После выполнения файла в каталоге формируются каталоги с восстановленными информационными базами, log файлы процесса и v8i файл описания списка информационных баз.

 

:: Восстанавливает несколько бекапов информационных баз в текущем каталоге
:: ver. 1.01 -
:: ver. 1.02 Добавлена возможность запуска восстановленных ИБ, если переданы параметры
:: ver. 1.03 Не задваиваются описания ИБ в файле описания
:: 2014(c)VSCraft
@Echo off
setlocal enabledelayedexpansion
::::::::::::::: settings :::::::::::::::
:: имя файла списка информационных баз (должен быть в UTF-8 кодировке)
Set ibfl=ib.v8i
:: имя папки в списке информационных баз для вновь создаваемых (одно слово по-английски)
Set fld=Recovered_Backups
:: если dt файл удалять не нужно оставить параметр пустым
Set deleteDt=
:: путь до исполняемого файла 1С
Set exe1c="%ProgramFiles%1cv82common1cestart.exe"
IF defined ProgramFiles(x86) Set exe1c="%ProgramFiles(x86)%1cv82common1cestart.exe"
Set fld_exists=
::::::::::::::::::::::::::::::::::::::::

if NOT exist %ibfl% @echo.>%ibfl%
for /F %%I in (%ibfl%) DO (
IF .%%I.==.[%fld%]. Set fld_exists=1
)


if defined fld (
if NOT defined fld_exists (
@echo [%fld%]>>%ibfl%
@echo ID=fce6b3f9-ac31-4642-8461-dc60b1deeb0a>>%ibfl%
@echo OrderInList=-1>>%ibfl%
@echo Folder=/>>%ibfl%
@echo OrderInTree=360704>>%ibfl%
@echo External=0 >>%ibfl%
)
)

@FOR %%I in (*.dt) do (
@SET nIb=%%~nI
IF NOT Exist !nIb! Md !nIb!
@echo !TIME! Loading !nIb!
IF NOT exist "!nIb!1Cv8.1CD" (
start "%TIME% New IB creation !nIb!" /WAIT %exe1c% CreateInfoBase File="!nIb!";
)
start "%TIME% Loading !nIb!" /WAIT %exe1c% Config /F "!nIb!"  /RestoreIb "!nIb!.dt" /Out "!nIb!.log"
IF defined deleteDt @del "%%I"
Set ibFound=
for /F %%I in (%ibfl%) DO (
IF .%%I.==.[!nIb!]. Set ibFound=1
)
IF NOT defined ibFound (
@echo [!nIb!]>>%ibfl%
@echo Connect=File="%cd%!nIb!";>>%ibfl%
@echo Folder=/%fld%>>%ibfl%
@echo ID=772411e8-6051-4b88-bd5a-f27ccc527500>>%ibfl%
@echo External=0 >>%ibfl%
@echo App=Auto>>%ibfl%
@echo WA=1>>%ibfl%
@echo Version=8.2>>%ibfl%
)

)

@IF [%1]==[] exit
@FOR /D %%U in (*) DO start "" %exe1c% EnterPrise /F %%U /N %1 /P %2

Нужно заметить, что батник предназначен для работы в свежеприготовленом каталоге или, чтобы добавить дополнительные базы. Если запустить его второй раз с теми же dt-шниками, будет запрашиваться имя пользователя-пароль для загрузки конфигуратора в уже существующей базе.

 

ver 1.02 Добавлена возможность сразу запускать восстановленные информационные базы, если батнику передан один или два параметра (имя и пароль пользователя информационной базы)

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *