Автоматическое сохранение базы штатными средствами

0. Роман Сафонов (mt111) 3 01.12.16 18:04 Сейчас в теме
Всё началось с того, что я лентяй. Когда пришел на работу в первый раз, мне сообщили, что уже лет 10 делают сохранение базы каждый день в конце рабочего дня. Из этого вытекает, что если кто-то решит подтянуть свои хвосты, то мне приходится сидеть на работе тоже. Честно, мягко говоря, меня это не особо радовало...
Порывшись на просторах инета, было принято решение сделать "автосохранялку". Как уже говорилось, "Я ЛЕНИВЫЙ", поэтому мне было попросту лень ставить всякие утилиты и программки, реализовал все штатными средствами.

Перейти к публикации

Комментарии
1. Дмитрий Дрейцер (MadDAD) 119 15.12.16 16:45 Сейчас в теме
Есть нюанс. d_t.com который создается при выполнении скрипта является 16-разрядным приложением и не сможет работать на х64 ОС.
2. Роман Сафонов (mt111) 3 21.12.16 18:03 Сейчас в теме
(1) %date%тебе в помощь, возвращает тек.дату в cmd
4. Дмитрий Дрейцер (MadDAD) 119 22.12.16 08:28 Сейчас в теме
(2) Так мне и не надо, это у тебя же в батнике начиная отсюда ":: Code by Herbert Kleebauer" создается com-файл. Только работать будет не везде. Поэтому нужно в описании разработки предупредить что "не работает на X64"
3. Артем T. (1qazxsw21QAZXSW2) 21.12.16 18:24 Сейчас в теме
Перебори свою лень 1 раз и настрой все нормально
6. Роман Сафонов (mt111) 3 22.12.16 11:57 Сейчас в теме
(3) для нашего сервачка-старичка этого вполне хватает.
А вообще вариантов бекапов масса, и каждый выбирает для себя и под свои нужды, материал выставлен в ознакомительных целях, Архивирование проходит без проблем и на х32 и на х64, а уж что делать с архивом это уже личное дело каждого, как его назвать, куда его положить и что с ним делать дальше
7. Роберт В е р т и н с к и й (v3rter) 22.12.16 12:48 Сейчас в теме
(6)
Согласен. По нынешним меркам объемы баз 7.7 настолько невелики, что на выбор архиватора и способа архивации стоит тратить время только при количестве баз от 10.

Думаю, вместо
start /W /D "C:\Program Files\1Cv77\BIN\" 1cv7.exe
лучше будет
start /W /D "" "C:\Program Files\1Cv77\BIN\1cv7.exe"
или
start /W /D "" "%programfiles%\1Cv77\BIN\1cv7.exe"

В своей практике в начале батника обычно прописываю все пути и некоторые параметры в переменные через SET. Это чтобы не искать их потом по всему коду и не тратить время на "найти-заменить".
8. Роман Сафонов (mt111) 3 23.12.16 09:21 Сейчас в теме
(7) по поводу переменных - дельное предложение, весьма упростит некоторые моменты
5. Роберт В е р т и н с к и й (v3rter) 22.12.16 09:51 Сейчас в теме
Нагуглил другой способ извлечения даты-времени http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us
и переделал

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,14%
echo Local date is [%ldt%]

На выходе будет Local date is [20161222094850]

Переделать исходный скрипт можно, например, так:
rename "D:\Arhiv\2016\arc.zip" %ldt%-AS.zip

Для 1C 7.7 эффективнее будут разностные архивы 7zip, так как 80% архива - пакеты регламентной отчетности прошлых годов.
http://dkrichun.blogspot.ru/2012/07/7-zip.html
Один раз в неделю (в выходные) создавать полный архив каталога:
7z a "D:\Backup\full.7z" -r "C:\Data"

Ежедневно (по рабочим дням) создавать разностный архив:
7z u "D:\Backup\full.7z" -r -u- -up0q3x2z0!"D:\Backup\diff-%date%.7z" "C:\Data"

При этом:
Полный архив изменяться не будет, благодаря опции -u-.
Если файл попал в полный архив, но к моменту создания разностного архива был удален из исходного каталога, он будет удален при распаковке разностного архива поверх полного, за это отвечает опция q3.
Если файл в исходном каталоге старее чем файл в полном архиве (не важно, по какой причине), он будет добавлен в разностный архив и при его распаковке поверх полного архива заменит более новый, за это отвечает опция x2.

7z a -mx0 "C:\Backup\dimas\docs.7z" -r "D:\Users\dimas\Documents"
7z a -mx0 "C:\Backup\dimas\pics.7z" -r "D:\Users\dimas\Pictures"
7z a -mx0 "D:\Backup\dimas\gdisk.7z" -r "C:\Users\dimas\Google Диск"

7z u -mx0 "C:\Backup\dimas\docs.7z" -r -u- -up0q3x2z0!"C:\Backup\dimas\docs-%date%.7z" "D:\Users\dimas\Documents"
7z u -mx0 "C:\Backup\dimas\pics.7z" -r -u- -up0q3x2z0!"C:\Backup\dimas\pics-%date%.7z" "D:\Users\dimas\Pictures"
7z u -mx0 "D:\Backup\dimas\gdisk.7z" -r -u- -up0q3x2z0!"D:\Backup\dimas\gdisk-%date%.7z" "C:\Users\dimas\Google Диск"
Показать
Кстати, тот же случай, когда вместо %date% удобнее будет использовать %ldt% из примера выше.

Можно еще попробовать Cobian Backup. По личному опыту для кобиана на диске с базами надо включать теневое копирование (защиту системы).
9. Роберт В е р т и н с к и й (v3rter) 27.12.16 11:54 Сейчас в теме
Собственно, сейчас у большинства архиваторов есть ключи типа "добавить дату к имени архива", но было интересно решить задачу получения даты-времени средствами bat-языка.
Оставьте свое сообщение