Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Несколько резервных копий файла с датами в названии

Ответить
Настройки темы
CMD/BAT - [решено] Несколько резервных копий файла с датами в названии

Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Изменения
Автор: Sisin
Дата: 03-08-2017
Господа, периодически обнуляется файл настроек от приложения autobackup.bak
(относительный путь profile\autobackup.bak).
Помогите сделать батник, который бы сохранял копии в этой же папке profile следующим образом:
"1. Сохранение 12.06.17.bak"
"2. Сохранение 13.06.17.bak"
"3. Сохранение 14.06.17.bak"
"4. Сохранение 15.06.17.bak"
"5. Сохранение 16.06.17.bak"

При сохранении 6-ой копии копия бы сохранялась как:
"1. Сохранение 17.06.17.bak"
и т.д.

В итоге бы было всегда 5 копий.
Получается, что батник должен заменять самую старую копию на новую.

Отправлено: 15:21, 03-08-2017

 
mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


Цитата Sisin:
"1. Сохранение 12.06.17.bak" »
Цитата Sisin:
При сохранении 6-ой копии копия бы сохранялась как:
"1. Сохранение 17.06.17.bak" »
Т.е. требуется удалить самую старую копию, а затем создать новую с тем же номером. Или лучше — наоборот: сначала создать новую, а уж по завершении проверки правильности нового бэкапа удалить старую.

Думаю что отталкиваться надо от этого.

PS
Ну и стандартно неудобный (с точки зрения зрительного анализа и машинного разбора) подход к именованию файлов: ДД.ММ.ГГГГ, вместо предпочтительного ГГГГММДД, при котором файлы даже зрительно располагаются в порядке возрастания дат. А ваши префиксы 1., 2. и т.д. дополнительно затруднят вам работу. Но понимание этого приходит с опытом (иногда хватает пары дней).

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 03-08-2017 в 17:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:54, 03-08-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Sisin, Не вижу логики в указанном Вами способе нумерации.
Вот решение, где самый старый из указанного количества файл будет под номером 1, а самый новый будет всегда иметь не более максимально-возможного указанного Вами номера, например, 5
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set "BoxIn=Z:\Box_In\profile"
Set "FileIn=autobackup.bak"

Set "BakPrefix= Сохранение "
Set "Delim=."
Set "BakExt=bak"
Set "MDate=??.??.??"

Set /A NMax=5

Call :StrDate "Tdate"

Set /A iBak=%NMax%-1
FOR /F "usebackq Skip=%iBak% delims=" %%i in (`Dir "%BoxIn%\*%Delim%%BakPrefix%%Mdate%.%BakExt%" /B /T:C /O:-D 2^>nul`) DO Del "%BoxIn%\%%i" 

Set /A iBak=1
FOR /F "usebackq Tokens=1,* delims=%Delim%" %%i in (`Dir "%BoxIn%\*%Delim%%BakPrefix%%Mdate%.%BakExt%" /B /T:C /O:D 2^>nul`) DO Ren "%BoxIn%\%%i%Delim%%%j" "!iBak!%Delim%%%j" &Set /A iBak+=1

Copy "%BoxIn%\%FileIn%" "%BoxIn%\%iBak%%Delim%%BakPrefix%%Tdate%.%BakExt%" >nul 
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET @Tdate=%%d
	Set "%~1=%@Tdate:~6,2%.%@Tdate:~4,2%.%@Tdate:~2,2%"
GoTo :Eof
Пусть макс количество копий =5. Батник удаляет старые копии, оставляет 4 самые свежие (если они есть), переименовывает оставшиеся в соответствии с нумерацией 1,2,3 ... и создаёт копию с максимальным номером, не более 5.
То есть, если по началу копий вообще нет, получим номер 1, если есть 3 старые копии, новая будет с номером 4. Если есть 5 копий, удалим первую, останутся 2,3,4,5, переименуем их в 1,2,3,4 и новая будет с номером 5
Я бы вообще предпочел не нумеровать копии 1,2,3 ... ИМХО, выгоднее делать в таком виде:
ггггммдд_ччмнссдс_имяфайла, например: 20170612_134558_autobackup.bak

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 03-08-2017 в 17:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:40, 03-08-2017 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Несколько резервных копий файла с датами в названии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - bat файл, удаление старых резервных копий share Скриптовые языки администрирования Windows 2 23-06-2016 23:00
Разное - [решено] Nokia PS восстановление контактов из резервных копий. IVa_ Мобильные ОС, смартфоны и планшеты 2 06-01-2016 20:42
V. 2010 - Создание резервных копий Exchange после развертывания DAG. Alexchandr Microsoft Exchange Server 7 03-03-2015 14:51
CMD/BAT - копирование по SHH (psftp) резервных копий enkil@vk Скриптовые языки администрирования Windows 1 05-05-2012 16:56
Разное - [статья] Восстановление данных из резервных и теневых копий в Windows 7 Vadikan Microsoft Windows 7 12 06-02-2011 14:46




 
Переход