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

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

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

Новый участник


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

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


Добрый день.

Есть батник для создания бекапов sql. (брал здесь на форуме)
Создаются полные, диффы и логи. Затем подсчитывается число файлов в папке и удаляются старые кроме последних 40.
читать дальше »
Код: Выделить весь код
@echo off

setlocal enableextensions enabledelayedexpansion
chcp 1251
rem ---папка для очистки; обрамление через chcp чтоб консоль приняла русский---
set sFolder=F:\Архив1С\БАЗЫ\БитФинанс\Backups
chcp 866

rem ---кол-во файлов, оставляемых в папке
rem расчет: 1*неделя + 1*день дифф + 2*день лог= в неделю 14+7+1=22 файла в неделю
set /a iCount = 44

for /f "skip=%iCount% usebackq delims=" %%i in (
	`dir /b /a:-d /o:-d /t:w "%sFolder%"`
) do del /f /q "%sFolder%\%%~i"

endlocal

exit /b 0


Требуется: если удален полный бекап - удалять все диффы м/у ним и следующим полным.

Отправлено: 09:35, 20-06-2014

 

Ветеран


Contributor


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

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



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

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


Новый участник


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

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


Цитата megaloman:
Затем подсчитывается число файлов в папке и удаляются старые кроме последних 40. »
Я ж писал: это было сделано ДО того, как заметил, что
Цитата megaloman:
bitFinance_full*.bak - это основной бэкап, а всё остальное- дополнение к нему? Без основного бэкапа они не имеют смысла? »
Надо было по-быстрому как-то ограничить рост бекапов - вот и нашел тут батник.

В общем, Вы все правильно поняли, большое спасибо.

Отправлено: 08:00, 23-06-2014 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление файлов по дате AlexPebody Скриптовые языки администрирования Windows 6 25-07-2013 16:33
VBS/WSH/JS - [решено] удаление старых файлов по маске support23 Скриптовые языки администрирования Windows 1 03-06-2013 08:41
CMD/BAT - Удаление файлов по дате interminable Скриптовые языки администрирования Windows 1 07-06-2012 15:48
CMD/BAT - Удаление файлов по дате ADGJMPTW Скриптовые языки администрирования Windows 1 10-10-2010 20:08
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37




 
Переход