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

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

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

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

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

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

set VDATE=%date%

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

set VTIME=%VTIME::=-%

 

set EnginePath=»C:Program Files (x86)1cv828.2.19.68in1cv8.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 — имя базы

 

 

 

18 Comments

  1. OBEH

    тоже тема.

    А если установить обновление через домен?

    И еще.

    Что будет, если у того, кто запускает этот самый bat файл, нет прав на установку программ на компьютер?

    Reply
  2. MrNick
    Что будет, если у того, кто запускает этот самый bat файл, нет прав на установку программ на компьютер?

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

    А если установить обновление через домен?

    Не знаю, а зачем это может понадобиться?

    Reply
  3. w-divin

    1) выгоняет ли сие чудо активных пользователей?

    2) Проверяет ли наличие активных сеансов/соединений?

    3) как обновлять базы разных версий платформы? Можно ли указывать путь к EXE для каждой базы, или для разных версий прийдется делать разные bat-файлы?

    4) Как быть если в разных базах разные пользователи?

    5) Нужно ли указывать где-то администратора кластера? (см. п1-2)

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

    ПыСы — для клиент-серверных баз может ли делать бекапы средствами СУБД?

    Reply
  4. MrNick

    (3) w-divin,

    1,2) Это реализовать не получилось.

    3,4) Можно и в одном файле делать, указывая нужные параметры для каждой группы баз

    5) Нет

    6) Нет, только средствами 1С.

    Reply
  5. Evgen54

    Спасибо очень помогло

    Reply
  6. pyrkin_vanya

    У меня не работает. Вообще ничего не делает. Ни папки не создает, не обновляет, не делает архив. У меня база файловая.

    @chcp 1251

    set VDATE=%date%

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

    set VTIME=%VTIME::=-%

    set EnginePath=»C:Program Files1cv8common1cestart.exe»

    set User=Администратор

    set Password=»ос82012ид»

    set CfuLocation=»D:1СОбновления1cv8.cfu»

    set Cluster=»D:1СBASE»

    set LogLocation=D:1СAutoUpdate\%VDATE%\r

    set BackupLocation=D:1СBackUp\%VDATE%\r

    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

    Что не так?

    Reply
  7. MrNick

    (6) pyrkin_vanya,

    Попробуйте для начала изменить переменную EnginePath. У меня в комментариях написано, что «путь к стартеру 1с, exe файл из папки common использовать нельзя.»

    Reply
  8. pyrkin_vanya

    (7) нет, не работает. Вот строчка set EnginePath=»C:Program Files1cv88.3.4.389in1cv8.exe»

    Reply
  9. pyrkin_vanya

    Еще интересуют эти параметры set Cluster и set BaseName

    set BaseName — это имя как она записана в окне выбора информационной базы?

    set Cluster — это имя кластера. А если база файловая?

    Reply
  10. MrNick

    (9) pyrkin_vanya, если база файловая, то по-другому будет немного. Вместо /S %Cluster%/%BaseName% нужно /F «ПутьКБазе».

    Судя по скриншоту, вы создаете папку D:AutoUpdate22.05.2014, а потом пытаетесь лог файл записать в папку D:1СAutoUpdate22.05.2014. Поэтому он и пишет, что каталог не обнаружен.

    Reply
  11. pyrkin_vanya

    Переписал файл с использованием английских символов

    @chcp 1251

    set VDATE=%date%

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

    set VTIME=%VTIME::=-%

    set EnginePath=»C:Program Files1cv88.3.4.389in1cv8.exe»

    set User=Admin

    set Password=»123″

    set CfuLocation=»D:1CUpdate1cv8.cfu»

    set Cluster=»D:1CBASE»

    set LogLocation=D:1CAutoUpdate\%VDATE%\r

    set BackupLocation=D:1CBackUp\%VDATE%\r

    MD «D:1CBackUp\%VDATE%»

    MD «D:1CAutoUpdate\%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

    В логах сохраняется «Ошибка операциии над базой данных»

    И в консоле отображаются иероглифы.

    Reply
  12. pyrkin_vanya

    А так ошибок не возникает теперь.

    Reply
  13. MrNick

    (12) pyrkin_vanya, у вас по-прежнему в командной строке написано CONFIG /S. Нужно CONFIG /F для файловой.

    Reply
  14. pyrkin_vanya

    Спасибо огромное. Все получилось. Вот готовый вариант для файловой базы.

    @chcp 1251

    set VDATE=%date%

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

    set VTIME=%VTIME::=-%

    set EnginePath=»C:Program Files1cv88.3.4.389in1cv8.exe»

    set User=Admin

    set Password=»123″

    set CfuLocation=»D:1CUpdate1cv8.cfu»

    set Cluster=»D:1CBASE»

    set LogLocation=D:1CAutoUpdate\%VDATE%\r

    set BackupLocation=D:1CBackUp\%VDATE%\r

    MD «D:1CBackUp\%VDATE%»

    MD «D:1CAutoUpdate\%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

    Reply
  15. pyrkin_vanya

    Воспользуюсь случаем. А случаем не знаете как с FTP работать? Мне нужно проверить FTP на наличие файла обновления. Если есть взять, обновить конфу, сделать бекап (это в любом случае), а потом бекап и логи кинуть в определенную папку на FTP?

    Reply
  16. MrNick

    Сам не работал с ftp. Вот тут есть немного информации по теме http://winkomp.ru/kak-zagruzit-i-skachat-fajly-s-ftp-bat-fajl/

    Reply
  17. pyrkin_vanya

    (16) Спасибо еще раз. А не подскажите как можно в формате дата_Время dt выгрузить.

    Я вот немного переписал

    @chcp 1251

    set VDATE=%date%

    set VTIME=%time:~0,-6%

    set VTIME=%VTIME::=_%

    Вот как он формирует. Расширение не проходит. Как поменять? Подскажите пожалуйста.

    Reply
  18. MrNick

    (17) Попробуйте значение «.dt» присвоить отдельной переменной, и в строке /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt указывать именно её.

    Reply

Leave a Comment

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