Текст пакетного файла:
rem «путь к файлу архива базы»
SET PBACKUP=D:ackup1Cv8
rem «путь к базе»
SET SOURC=D:1Cdataasa
rem «пользователь»
SET USER=admin
rem «пароль»
SET PASSVD=123
tskill *1cv8* /a /v
if exist %PBACKUP%.dt copy %PBACKUP%.dt %PBACKUP%_old.dt
«C:Program Files (x86)1cv82common1cestart.exe» config /f %SOURC% /N %USER% /P %PASSVD% /DumpIB %PBACKUP%.dt
if %date:~0,2%%date:~3,2% == 0101 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt
if %date:~0,2%%date:~3,2% == 0107 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt
Для создания архива файловой базы 8.2 достаточно в принципе прописать одну строчку в пакетном файле:
«C:Program Files (x86)1cv82common1cestart.exe» config /f %SOURC% /N %USER% /P %PASSVD% /DumpIB %DIRNAME%\%FILENAME%.dt
Для базы клиент-серверной вместо ключа /f используем ключ /s
Такая строка открывает базу в режиме конфигуратор под определенным пользователем и создает архивную копию в указанный каталог. Использую для определения параметров запуска и путей переменные среды, которые определяются вначале пакетного файла. Но можно указать конкретные значения параметров сразу в этой конструкции и запускать .bat файл с одной строкой. Но при этом есть угроза затереть создаваемый перезаписываемый архив при любом сбое.
Поэтому увеличение количества строк в .bat файле обусловлено созданием резервного копирования архива.
Есть две особенности при задании переменных среды:
1.Пакетные файлы не дружат с кириллицей. Пути , пользователь и пароль должны быть прописаны с использованием только английского шрифта и цифр.
2.Между именем переменной среды, знаком равенства и значением переменной не должно быть пробела: PBACKUP=D:ackup1Cv8
Строка tskill *1cv8* /a /v
— очистка зависших терминальных сессий
Остальные три строки команд предназначены для резервирования архивных копий.
if exist %PBACKUP%.dt copy %PBACKUP%.dt %PBACKUP%_old.dt
– копирует файл с именем 1Cv8.dt в файл с именем 1Cv8_old.dt То есть, сохраняет(перезаписывает) предыдущий архив перед созданием нового.
if %date:~0,2%%date:~3,2% == 0101 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt
— Если текущая дата равна дате начала года копирует созданный архив в файл с датой в имени файла , например 1Cv801012012.dt , чтобы он хранился в архивной папке и не затирался.
Аналогично конструкция
if %date:~0,2%%date:~3,2% == 0107 copy %PBACKUP%.dt %PBACKUP%%date:~0,2%%date:~3,2%%date:~6,4%.dt
— резервирует копию базы за дату 01.07. каждого года.
При использовании пакетного файла из публикации достаточно в переменных среды указать конкретные данные по вашей базе и каталогу сохранения архива и создать для него удобное для вашего сервера назначенное задание Windows.
Пакетные файлы хорошо дружат с кириллицей. Только кодировку надо выбрать не 1251, а 866
(1) спасибо. однако дружба при определенных условиях 🙂
тем более , что эти условия для меня , например, непонятны:
я не могу выбрать при сохранении файла кодировку 866
Зато могу выбрать ANSI, UTF-8, Юникод. 🙂 Какая из них 866, какая есть непременным условием дружбы?
(2)
зачастую её ещё называют OEM.
http://akelpad.sourceforge.net
а вообще — AkelPad Вам в помощь
А я бы порекомендовал ознакомиться сhttp://www.cobiansoft.com/index.htm
Присутствует главная плюшка — теневое копирование + отсылка отчетов на почту и бесплатно.
Что делать с тонкими клиентами ?
(5) vadimlp77, добивать их тонких, клиентов!
автору спасибо, взял на вооружение строчку:
tskill *1cv8* /a /v
WinXP, Win 7 заработала сходу!
Спасибо за оценку!
Вопрос по тонким клиентам не поняла.
Если ответ «добивать» подходит, то + 1 🙂
все кто не получают зарплату в мелкософт идиоты и блондинки !!!!
Спасибо. Возможно, чуть рациональнее задать формат даты в виде год-месяц-день, чтоб легче искать в залежах архивов.
Друзья, подскажите по теме статьи:
Пакетная обработка выполняется только если нет других интерактивных сеансов?
У меня работает только если к базе ни один сеанс в этот момент времени не подключен. Если запущено клиентское приложение на этой базе, то пакетная обработка не срабатывает.
Как это устроено?
(10) Строка tskill *1cv8* /a /v должна закрывать все открытые сеансы, но предполагаю что не срабатывает при открытых сеансах на тонких и WEb клиентах . Однако это с моей стороны лишь такое себе предположение. Ждите , возможно, что более грамотные разработчики ответят обоснованно и убежденно 🙂
(11)
у меня это работает почему-то
(12)
Только терминальных? Другие видимо не используются. Так вот почему здесь отсутствует команды блокировки и раз блокировки базы (/CЗавершитьРаботуПользователей и /CРазрешитьРаботуПользователей)!?