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

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

Ветеран


Contributor


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

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


cons74, как-то замудрёно получается. Непонятно: Затем подсчитывается число файлов в папке и удаляются старые кроме последних 40.
Зачем нужен этот подсчет? Правильно ли я понимаю: bitFinance_full*.bak - это основной бэкап, а всё остальное- дополнение к нему? Без основного бэкапа они не имеют смысла? Тогда идея простого решения - задаём, сколько фулл-бэкапов оставить, определяем имя последнего из оставляемых бэкапов, удаляем все, сделанное позже (сортировку по времени создания делает Dir)
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

rem ---папка для очистки; 
set sFolder=F:\Архив1С\БАЗЫ\БитФинанс\Backups

rem iCount - число полных оставляемых бэкапов
set /a "iCount=14"

rem префикс полного бэкапа
set "Pref=bitFinance_full_"

rem расширение полного бэкапа
set "Ext=.bak"

Set /a N=%iCount%-1

Set File=""
for /f "skip=%N% usebackq delims=" %%i in (`dir /b /a:-d /o:-d /t:w "%sFolder%\%Pref%*%Ext%"`) do (
	Set File=%%i
	GoTo :Continue
)
:Continue

Set "L=0"
for /f "usebackq delims=" %%i in (`dir /b /a:-d /o:-d /t:w "%sFolder%"`) do (
	If !L!==1 del /f /q "%sFolder%\%%i"
	If "%%i"=="%File%" Set "L=1"
)

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


Последний раз редактировалось megaloman, 20-06-2014 в 14:04.

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

Отправлено: 10:31, 20-06-2014 | #2