gifts2017

Bat файл для группового обновления баз

Опубликовал Никита Пташкин (MrNick) в раздел Администрирование - Системное

Будет полезен для тех, кому нужно разом обновить много однотипных баз.

Пример bat файла, который сначала делает архив базы, затем запускает обновление. Для каждого процесса архивации и обновления создаётся txt лог. Обновление баз происходит поочереди. Возможно использовать кириллицу в путях к папкам, логинах и паролях.

Пояснения к содержимому файла:

@chcp 1251 - указываем в начале файла, чтобы можно было использовать кириллицу.

Задаём значения и формат переменных даты и времени. Используются в именах папок с логами и архивами:

set VDATE=%date%

set VTIME=%time:~1,-4%

set VTIME=%VTIME::=-%

 

set EnginePath="C:\Program Files (x86)\1cv82\8.2.19.68\bin\1cv8.exe" - путь к стартеру 1с, exe файл из папки common использовать нельзя.

set CfuLocation="C:\AutoUpdate\ТутФайлДляОбновления\1cv8.cfu" - путь к файлу с обновлением. Можно использовать cfu, cf.

set User=Администратор - имя пользователя

set Password="123" - пароль

set Cluster=1c-cluster - имя кластера

set LogLocation=C:\AutoUpdate\%VDATE%\  - папка с логами

set BackupLocation=D:\Backcup\%VDATE%\ - папка с архивами

Создание катологов, в которые будут сохраняться архивы и логи.

MD "D:\Backcup\%VDATE%"

MD "C:\AutoUpdate\%VDATE%"

set BaseName=Base1 - имя базы

 

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Запуск обновления
.rar 0,51Kb
26.12.13
32
.rar 0,51Kb 32 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. OBEH (OBEH) 01.01.14 10:43
тоже тема.
А если установить обновление через домен?
И еще.
Что будет, если у того, кто запускает этот самый bat файл, нет прав на установку программ на компьютер?
2. Никита Пташкин (MrNick) 04.01.14 18:56
Что будет, если у того, кто запускает этот самый bat файл, нет прав на установку программ на компьютер?

Главное чтобы у пользователя были права запустить 1С.
А если установить обновление через домен?

Не знаю, а зачем это может понадобиться?
3. Дмитрий Елисеев (w-divin) 08.01.14 17:50
1) выгоняет ли сие чудо активных пользователей?
2) Проверяет ли наличие активных сеансов/соединений?
3) как обновлять базы разных версий платформы? Можно ли указывать путь к EXE для каждой базы, или для разных версий прийдется делать разные bat-файлы?
4) Как быть если в разных базах разные пользователи?
5) Нужно ли указывать где-то администратора кластера? (см. п1-2)

Практически ничего не ясно из описания...

ПыСы - для клиент-серверных баз может ли делать бекапы средствами СУБД?
4. Никита Пташкин (MrNick) 08.01.14 18:33
(3) w-divin,
1,2) Это реализовать не получилось.
3,4) Можно и в одном файле делать, указывая нужные параметры для каждой группы баз
5) Нет
6) Нет, только средствами 1С.
5. Evgen54 Evgen54 (Evgen54) 03.03.14 11:49
6. Константин Рыбаков (pyrkin_vanya) 22.05.14 11:52
У меня не работает. Вообще ничего не делает. Ни папки не создает, не обновляет, не делает архив. У меня база файловая.

@chcp 1251
set VDATE=%date%
set VTIME=%time:~1,-4%
set VTIME=%VTIME::=-%

set EnginePath="C:\Program Files\1cv8\common\1cestart.exe"
set User=Администратор
set Password="ос82012ид"
set CfuLocation="D:\1С\Обновления\1cv8.cfu"
set Cluster="D:\1С\BASE"
set LogLocation=D:\1С\AutoUpdate\%VDATE%\
set BackupLocation=D:\1С\BackUp\%VDATE%\

MD "D:\BackUp\%VDATE%"
MD "D:\AutoUpdate\%VDATE%"

set BaseName=Base1
start "" /wait %EnginePath% CONFIG /S %Cluster%/%BaseName% /N %User% /P %Password% /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt /Out %LogLocation%%BaseName%_%VDATE%_.log
start "" /wait %EnginePath% CONFIG /S %Cluster%/%BaseName% /N %User% /P %Password% /UpdateCfg %CfuLocation% /UpdateDBCfg /Out %LogLocation%%BaseName%_%VDATE%.log

Что не так?
7. Никита Пташкин (MrNick) 22.05.14 12:12
(6) pyrkin_vanya,
Попробуйте для начала изменить переменную EnginePath. У меня в комментариях написано, что "путь к стартеру 1с, exe файл из папки common использовать нельзя."
8. Константин Рыбаков (pyrkin_vanya) 22.05.14 13:40
(7) MrNick, нет, не работает. Вот строчка set EnginePath="C:\Program Files\1cv8\8.3.4.389\bin\1cv8.exe"
Прикрепленные файлы:
9. Константин Рыбаков (pyrkin_vanya) 22.05.14 13:50
Еще интересуют эти параметры set Cluster и set BaseName

set BaseName - это имя как она записана в окне выбора информационной базы?
set Cluster - это имя кластера. А если база файловая?
10. Никита Пташкин (MrNick) 22.05.14 14:16
(9) pyrkin_vanya, если база файловая, то по-другому будет немного. Вместо /S %Cluster%/%BaseName% нужно /F "ПутьКБазе".

Судя по скриншоту, вы создаете папку D:\AutoUpdate\22.05.2014, а потом пытаетесь лог файл записать в папку D:\1С\AutoUpdate\22.05.2014. Поэтому он и пишет, что каталог не обнаружен.
11. Константин Рыбаков (pyrkin_vanya) 22.05.14 14:54
Переписал файл с использованием английских символов
@chcp 1251
set VDATE=%date%
set VTIME=%time:~1,-4%
set VTIME=%VTIME::=-%

set EnginePath="C:\Program Files\1cv8\8.3.4.389\bin\1cv8.exe"
set User=Admin
set Password="123"
set CfuLocation="D:\1C\Update\1cv8.cfu"
set Cluster="D:\1C\BASE"
set LogLocation=D:\1C\AutoUpdate\%VDATE%\
set BackupLocation=D:\1C\BackUp\%VDATE%\

MD "D:\1C\BackUp\%VDATE%"
MD "D:\1C\AutoUpdate\%VDATE%"

set BaseName=Base1
start "" /wait %EnginePath% CONFIG /S %Cluster%/%BaseName% /N %User% /P %Password% /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt /Out %LogLocation%%BaseName%_%VDATE%_.log
start "" /wait %EnginePath% CONFIG /S %Cluster%/%BaseName% /N %User% /P %Password% /UpdateCfg %CfuLocation% /UpdateDBCfg /Out %LogLocation%%BaseName%_%VDATE%.log

В логах сохраняется "Ошибка операциии над базой данных"
И в консоле отображаются иероглифы.
Прикрепленные файлы:
12. Константин Рыбаков (pyrkin_vanya) 22.05.14 14:55
А так ошибок не возникает теперь.
13. Никита Пташкин (MrNick) 22.05.14 15:15
(12) pyrkin_vanya, у вас по-прежнему в командной строке написано CONFIG /S. Нужно CONFIG /F для файловой.
pyrkin_vanya; +1 Ответить
14. Константин Рыбаков (pyrkin_vanya) 22.05.14 15:53
Спасибо огромное. Все получилось. Вот готовый вариант для файловой базы.
@chcp 1251
set VDATE=%date%
set VTIME=%time:~1,-4%
set VTIME=%VTIME::=-%

set EnginePath="C:\Program Files\1cv8\8.3.4.389\bin\1cv8.exe"
set User=Admin
set Password="123"
set CfuLocation="D:\1C\Update\1cv8.cfu"
set Cluster="D:\1C\BASE"
set LogLocation=D:\1C\AutoUpdate\%VDATE%\
set BackupLocation=D:\1C\BackUp\%VDATE%\

MD "D:\1C\BackUp\%VDATE%"
MD "D:\1C\AutoUpdate\%VDATE%"

set BaseName=Base1
start "" /wait %EnginePath% CONFIG /F %Cluster%/%BaseName% /N %User% /P %Password% /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt /Out %LogLocation%%BaseName%_%VDATE%_.log
start "" /wait %EnginePath% CONFIG /F %Cluster%/%BaseName% /N %User% /P %Password% /UpdateCfg %CfuLocation% /UpdateDBCfg /Out %LogLocation%%BaseName%_%VDATE%.log
15. Константин Рыбаков (pyrkin_vanya) 22.05.14 15:55
Воспользуюсь случаем. А случаем не знаете как с FTP работать? Мне нужно проверить FTP на наличие файла обновления. Если есть взять, обновить конфу, сделать бекап (это в любом случае), а потом бекап и логи кинуть в определенную папку на FTP?
16. Никита Пташкин (MrNick) 22.05.14 16:09
Сам не работал с ftp. Вот тут есть немного информации по теме http://winkomp.ru/kak-zagruzit-i-skachat-fajly-s-ftp-bat-fajl/
pyrkin_vanya; +1 Ответить 1
17. Константин Рыбаков (pyrkin_vanya) 22.05.14 18:01
(16) MrNick, Спасибо еще раз. А не подскажите как можно в формате дата_Время dt выгрузить.
Я вот немного переписал
@chcp 1251
set VDATE=%date%
set VTIME=%time:~0,-6%
set VTIME=%VTIME::=_%
Вот как он формирует. Расширение не проходит. Как поменять? Подскажите пожалуйста.

Прикрепленные файлы:
18. Никита Пташкин (MrNick) 26.05.14 13:49
(17) Попробуйте значение ".dt" присвоить отдельной переменной, и в строке /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt указывать именно её.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа