gifts2017

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

Опубликовал Валерий Сухих (vsuh) в раздел Администрирование - Сервисные утилиты

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%\1cv82\common\1cestart.exe"
IF defined ProgramFiles(x86) Set exe1c="%ProgramFiles(x86)%\1cv82\common\1cestart.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 Добавлена возможность сразу запускать восстановленные информационные базы, если батнику передан один или два параметра (имя и пароль пользователя информационной базы)

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.