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

Показать сообщение отдельно

Ветеран


Contributor


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

Профиль | Отправить 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