1. Все скрипты находятся в одном файле. У себя я его называю robot.bat
2. Файл robot.bat cостоит из функций. Эти функции могут вызывать из
robot.bat с помощью команды call %0 ИмяФункции Парам1 Парам2.
3. В параметрах robot.bat первым идет имя функции, далее - ее параметры.
4. Некоторые наиболее часто употребляемые параметры (например пути
и каталоги) устанавливаются в переменных среды. Поэтому если вы используете
Win98, поставьте в свойствах robot.bat самый большой размер для переменных
среды. Переменные среды устанавливаются функцией SETTINGS, она вызывается
при запуске любой функции из robot.bat Для определенности все каталоги
указываются без финального бэк-слэша (\).
5. Для хранения промежуточных данных используется каталог service,
путь к которому указывается в Settings.
6. Чтобы скрипты можно было запустить с любого компьютера желательно
устанавливать служебные программы (Rar, 1C, Zip) по одному маршруту,
например C:\Program Files\
7. Все процедуры пишутся одинаково:
:ИмяФункции
REM -------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: ИмяФункции Описание функции
REM -------------------------------------------------------------------------------
....
Операторы функции
.....
goto pend
|
8. Программа заканчивается меткой pend. Для выхода надо использовать
переход на pend, чем exit, т.к. exit убивает полностью скрипт.
9. Для своих часто используемых команд тоже имеет смысл написать
функции, тогда вызывать их можно будет просто
robot.bat ИмяФункции. |
DATETIME - добавляет в конец указанного файла дату и время (удобна
для протоколов)
CHECKMD - проверяет наличие в zip-файле файла 1cv7.md и при наличии
такового рассылает сообщения администраторам
UNLOAD1S - создает файл параметров и производит выгрузку данных из
1С в архив
URBD1S - запускает автообмен для 1S
URBDCHK1S - то же, что и URBD1S, но дополнительно контролирует наличие
*.MD в пришедшем файле.
В будующем можно написать:
COPYBASE - для копирования одного каталога DBF базы 1С в другой
ARCBASE - для архивирования каталога 1С - каталогов пользователей,
файлов MD, DD
REGISTER1S - регистрирует данные для 1С в
реестре.
|
На практике я теперь очень быстро могу добавить скрипт для архивирования
базы 1С, запуска автообмена и т.п., практически без отладки. Ведется
общий протокол, где можно проконтролировать исполнение работ. Рекомендую!
|
@echo on
REM Для ускорения работы отключаем сообщения
REM ----------------------------------------------------------------------------------------
REM ***** ***** ***** ***** *****
REM * * * * * * * *
REM * * * * * * * *
REM ***** * * ***** * * *
REM * * * * * * * *
REM * * * * * * * *
REM * ***** ***** ***** *
REM ----------------------------------------------------------------------------------------
REM (C) Robot Osipova, 2003, Osipov Sergey icq:73587347 fixin@mail.ru
fixin.by.ru
REM Набор функций для автоматизации задач администрирования 1С:
REM архивирование, автообмены, выгрузки
REM ----------------------------------------------------------------------------------------
REM Устанавливаем переменные среды
goto SETTINGS
:SETTINGS_BACK
goto>nul %1
echo %1 is not valid function name for this program
pause
goto pend
rem Параметры запуска:
rem robot Функция Параметр1 Параметр2 .... ПараметрN
cls
rem Echo >> %genlog% ROBOT.BAT STARTS WITH %1 %2 %3 %4 %5 %6
%7 %8
rem Создаются вспомогательные директории - рабочая директория
md>nul %workdir%
:REGISTER1S
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: REGISTER1S Регистрирует путь к 1с И КАТАЛОГИ
ОБМЕНА
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem ИСПОЛЬЗУЕТ:
rem workdir - там создается файл параметров запуска 1С и туда же пишется
протокол 1S
rem genlog - после завершения работы протокол 1С записывается в конец
протокола genlog
rem servdir - оттуда берутся файлы реестра
rem Регистрируется 2 файла (BASE - идентификатор базы): [HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\]
rem 1. BASE_EX - ветка реестра, содержащая данные по базе (в том числе
и пути автообмена)
rem сюда нужно полностью выгрузить с компьютера, где все настроено
ветку
rem [HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Моя база]
rem 2. BASE_TIT - ветка реестра с заголовком базы, выглядит примерно
так
rem [HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
rem "\\\\server\\bases\\mybase\\"="Моя база"
rem Вносим данные в реестр
if exist %servdir%\%2_ex.reg regedit /s %servdir%\%2_ex.reg
if exist %servdir%\%2_ex.reg echo >> %genlog% ENTER DATA FOR
AUTOEXCHANGE TO REGISTR FROM %servdir%\%2_ex.reg
if exist %servdir%\%2_tit.reg regedit /s %servdir%\%2_tit.reg
if exist %servdir%\%2_tit.reg echo >> %genlog% ENTER TITLE FOR
BASE %2 TO REGISTR FROM %servdir%\%2_tit.reg
goto pend
:UNLOAD1S
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: UNLOAD1S Выгружает данные из 1S в архив
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem %3 - Каталог базы
rem %4 - Пользователь
rem %5 - Пароль
rem %6 - Файл, куда выгружается база
rem %7 - Пароль файла выгрузки (zip-файла) - необязателен
rem ИСПОЛЬЗУЕТ:
rem workdir - там создается файл параметров запуска 1С и туда же пишется
протокол 1S
rem genlog - после завершения работы протокол 1С записывается в конец
протокола genlog
rem exe1s - там создается файл параметров
rem Для того, чтобы запустить выгрузку в 1С, нужно создать файл параметров.
ren 1С делает обмен и создает файл результатов
echo> %workdir%\prmun_%2.txt [General]
echo>>%workdir%\prmun_%2.txt Output=%workdir%\repun_%2.txt
echo>>%workdir%\prmun_%2.txt Quit=Y
echo>>%workdir%\prmun_%2.txt CheckAndRepair=N
echo>>%workdir%\prmun_%2.txt UnloadData=Y
echo>>%workdir%\prmun_%2.txt SaveData=N
echo>>%workdir%\prmun_%2.txt AutoExchange=N
echo>>%workdir%\prmun_%2.txt [UnloadData]
echo>>%workdir%\prmun_%2.txt UnloadToFile=%6
if not "%6"=="" echo>>%workdir%\prmun_%2.txt
Password=%7
%exe1s% CONFIG /D%3 /N%4 /P%5 /@%workdir%\prmun_%2.txt
echo >> %genlog% =================================================================
echo >> %genlog% 1 S U N L O A D
echo >> %genlog% =================================================================
call %0 DATETIME %genlog%
type %workdir%\repun_%2.txt >>%genlog%
goto pend
:STORE1S
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: STORE1S Сохраняет данные каталога 1S в архив
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem %3 - Каталог базы
rem %4 - Файл архива, куда выгружается база
rem %5 - Пароль файла выгрузки (zip-файла) - необязателен
rem ИСПОЛЬЗУЕТ:
rem genlog - после завершения работы протокол 1С записывается в конец
протокола genlog
rem exerar - Путь к rar
rem Сохраняет файлы из каталога 1С в архив.
set tmppass=-p%5
if "%5"=="" set tmppass=
%exerar% a -r %4 *.md %3\*.dll %3\*.cfg %3\*.dd? %3\*.dbf %3\*.lst
%tmppass%
echo >> %genlog% =================================================================
echo >> %genlog% 1 S STORE
echo >> %genlog% =================================================================
call %0 DATETIME %genlog%
echo Base "%2" in directory %3 store to file %4 >>%genlog%
goto pend
:STORE1SROOT
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: STORE1SROOT Сохраняет данные каталога 1S (без
DBF) в архив
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem %3 - Каталог базы
rem %4 - Файл архива, куда выгружается база
rem %5 - Пароль файла выгрузки (zip-файла) - необязателен
rem ИСПОЛЬЗУЕТ:
rem genlog - после завершения работы протокол 1С записывается в конец
протокола genlog
rem exerar - Путь к rar
rem Сохраняет файлы из каталога 1С в архив.
set tmppass=-p%5
if "%5"=="" set tmppass=
%exerar% a -r %4 %3\*.md %3\*.dll %3\*.cfg %3\*.dd? %3\*.lst %tmppass%
echo >> %genlog% =================================================================
echo >> %genlog% 1 S STORE ROOT
echo >> %genlog% =================================================================
call %0 DATETIME %genlog%
echo Base "%2" in directory %3 store to file %4 >>%genlog%
goto pend
:URBD1S
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: URBD1S Производит обмен данными в УРБД 1С
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem %3 - Каталог базы
rem %4 - Пользователь
rem %5 - Пароль
rem %6 - Строка ReadFrom
rem %7 - Строка WriteTo
rem ИСПОЛЬЗУЕТ:
rem workdir - там создается файл параметров запуска 1С и туда же пишется
протокол 1S
rem genlog - после завершения работы протокол 1С записывается в конец
протокола genlog
rem exe1s - там создается файл параметров
rem Для того, чтобы запустить обмен в 1С, нужно создать файл параметров.
ren 1С делает обмен и создает файл результатов
echo> %workdir%\prmex_%2.txt [General]
echo>>%workdir%\prmex_%2.txt Output=%workdir%\repex_%2.txt
echo>>%workdir%\prmex_%2.txt Quit=Y
echo>>%workdir%\prmex_%2.txt CheckAndRepair=N
echo>>%workdir%\prmex_%2.txt UnloadData=N
echo>>%workdir%\prmex_%2.txt SaveData=N
echo>>%workdir%\prmex_%2.txt AutoExchange=Y
echo>>%workdir%\prmex_%2.txt [AutoExchange]
echo>>%workdir%\prmex_%2.txt ReadFrom=%6
echo>>%workdir%\prmex_%2.txt WriteTo=%7
echo>>%workdir%\prmex_%2.txt SharedMode=1
%exe1s% CONFIG /D%3 /N%4 /P%5 /@%workdir%\prmex_%2.txt
echo >> %genlog% =================================================================
echo >> %genlog% U R B D 1 S E X C H A N G E
echo >> %genlog% =================================================================
call %0 DATETIME %genlog%
type %workdir%\repex_%2.txt >>%genlog%
goto pend
:ARCDIR
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: ARCDIR Упаковывает каталог с данными в режиме
апдейт
REM ----------------------------------------------------------------------------------------
rem %2 - Каталог
rem %3 - файл архива, куда будет положена упаковка
rem ИСПОЛЬЗУЕТ:
rem exerar - путь к архиватору
%exerar% a -r %3 %2\*.*
goto pend
:URBDCHK1S
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: URBDCHK1S Производит обмен данными в УРБД 1С
и проверку на MD
REM ----------------------------------------------------------------------------------------
rem %2 - Идентификатор базы ID
rem %3 - Каталог базы
rem %4 - Пользователь
rem %5 - Пароль
rem %6 - Строка ReadFrom
rem %7 - Строка WriteTo
rem %8 - Путь файла загрузки (в нем проверяется MD-файл
rem Вызывает функцию CHECKMD & URBDCHK1S (смотри их параметры)
call %0 CHECKMD %3 %8
call %0 URBD1S %2 %3 %4 %5 %6 %7
goto pend
:DATETIME
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: DATETIME Выводит в конец файла протокола текущую
дату и время
REM ----------------------------------------------------------------------------------------
rem %2 - Имя файла протокола
rem ИСПОЛЬЗУЕТ: workdir
rem Для вывода используется
rem В каталоге workdir создает nl.txt содержащий перевод строки
if not "%1"=="DATETIME" goto not_datetime
echo. >%workdir%\nl.txt
date <%workdir%\nl.txt >>%2
time <%workdir%\nl.txt >>%2
goto pend
:CHECKMD
REM ----------------------------------------------------------------------------------------
REM Ф У Н К Ц И Я :::: CHECKMD Проверка наличия MD-файла
REM ----------------------------------------------------------------------------------------
rem :: :: Проверяем наличие md-файла
rem %2 - Каталог базы (без слэша)
rem %3 - Полное имя (с путем) файла обмена
rem Если база не занята - проверка не нужна
rem ИСПОЛЬЗУЕТ: admins, exepkunzip
if not exist %2\1cv7.lck goto pend
rem Распаковываем файл обмена
md %2\check_md
cd %2\check_md
del %2\check_md\1cv7.md
%exepkunzip% -e %3 %2\check_md\ 1cv7.md
if not exist %2\check_md\1cv7.md goto checkmd_no_md
rem Рассылаем сообщение
for %%i in (%admins%) do net send %%i MD-file detected in file %3
for base %2 Kill a ll users and restart autoexchange in URBD !!!
goto pend
:checkmd_no_md
echo MD not found, ok
goto pend
:SETTINGS
rem Устанавливаем переменные среды
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM Ф У Н К Ц И Я :::: Установка рабочих переменных среды
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
rem Внимание !!! Все каталоги указывать без финального слэша !!! Например
C:\base
rem Полный путь к программе 1С
set exe1s="\\server\BIN\1cv7s.exe"
rem Полный путь к архиватору rar.exe
set exerar="C:\Program Files\WinRar\rar.exe"
rem Полный путь к распаковщику pkunzip.exe
set exepkunzip="\\server\service\pkunzip.exe"
rem Каталог для временных файлов
set workdir=\\server\service\wrk
rem Путь к командным файлам (и к текущему файлу тоже)
set servdir=\\server\service
rem Администраторы - список через точку с запятой - им будут рассылаться
сообщения
set admins=OSergey Администратор Admin
rem Генеральный протокол для всех сообщений
set genlog=\\server\service\genlog.txt
rem Каталог, куда складываются архивы
set arcdir=\\server\arc
rem Список компьтеров, данные с которых нужно архивировать
set computersforarc=server01;server02;user1;user2;user3
goto SETTINGS_BACK
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM Ф У Н К Ц И И П О Л Ь З О В А Т Е Л Я
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
REM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
rem Последняя строчка - указатель на конец программы
:pend
|