Пример 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 — имя базы
тоже тема.
А если установить обновление через домен?
И еще.
Что будет, если у того, кто запускает этот самый bat файл, нет прав на установку программ на компьютер?
Главное чтобы у пользователя были права запустить 1С.
Не знаю, а зачем это может понадобиться?
1) выгоняет ли сие чудо активных пользователей?
2) Проверяет ли наличие активных сеансов/соединений?
3) как обновлять базы разных версий платформы? Можно ли указывать путь к EXE для каждой базы, или для разных версий прийдется делать разные bat-файлы?
4) Как быть если в разных базах разные пользователи?
5) Нужно ли указывать где-то администратора кластера? (см. п1-2)
Практически ничего не ясно из описания…
ПыСы — для клиент-серверных баз может ли делать бекапы средствами СУБД?
(3) w-divin,
1,2) Это реализовать не получилось.
3,4) Можно и в одном файле делать, указывая нужные параметры для каждой группы баз
5) Нет
6) Нет, только средствами 1С.
Спасибо очень помогло
У меня не работает. Вообще ничего не делает. Ни папки не создает, не обновляет, не делает архив. У меня база файловая.
@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
Что не так?
(6) pyrkin_vanya,
Попробуйте для начала изменить переменную EnginePath. У меня в комментариях написано, что «путь к стартеру 1с, exe файл из папки common использовать нельзя.»
(7) нет, не работает. Вот строчка set EnginePath=»C:Program Files1cv88.3.4.389in1cv8.exe»
Еще интересуют эти параметры set Cluster и set BaseName
set BaseName — это имя как она записана в окне выбора информационной базы?
set Cluster — это имя кластера. А если база файловая?
(9) pyrkin_vanya, если база файловая, то по-другому будет немного. Вместо /S %Cluster%/%BaseName% нужно /F «ПутьКБазе».
Судя по скриншоту, вы создаете папку D:AutoUpdate22.05.2014, а потом пытаетесь лог файл записать в папку D:1СAutoUpdate22.05.2014. Поэтому он и пишет, что каталог не обнаружен.
Переписал файл с использованием английских символов
@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
В логах сохраняется «Ошибка операциии над базой данных»
И в консоле отображаются иероглифы.
А так ошибок не возникает теперь.
(12) pyrkin_vanya, у вас по-прежнему в командной строке написано CONFIG /S. Нужно CONFIG /F для файловой.
Спасибо огромное. Все получилось. Вот готовый вариант для файловой базы.
@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
Воспользуюсь случаем. А случаем не знаете как с FTP работать? Мне нужно проверить FTP на наличие файла обновления. Если есть взять, обновить конфу, сделать бекап (это в любом случае), а потом бекап и логи кинуть в определенную папку на FTP?
Сам не работал с ftp. Вот тут есть немного информации по темеhttp://winkomp.ru/kak-zagruzit-i-skachat-fajly-s-ftp-bat-fajl/
(16) Спасибо еще раз. А не подскажите как можно в формате дата_Время dt выгрузить.
Я вот немного переписал
@chcp 1251
set VDATE=%date%
set VTIME=%time:~0,-6%
set VTIME=%VTIME::=_%
Вот как он формирует. Расширение не проходит. Как поменять? Подскажите пожалуйста.
(17) Попробуйте значение «.dt» присвоить отдельной переменной, и в строке /DumpIB %BackupLocation%%BaseName%_%VDATE%.dt указывать именно её.