Войти

Показать полную графическую версию : Автоматическое удаление файлов старше 2х часов


Den13V
10-04-2014, 16:33
Всем доброго времени суток.

Есть папка в которой каждые пол часа создаются бекапы.
Подскажите как сделать так, чтобы удалялись только бекапы созданные более 2х часов назад от текущего времени, т.е. если батник запустился 17:31:00, то надо удалить все файлы созданные до 15:31:00.
В имени файла указано время создания (Half-Hour_time_15.01.25.bak) 15.01.25 - это время создания файла в формате HH:mm:ss с заменой : на точку?

Заранее очень благодарен.

Georgio
10-04-2014, 17:14
@echo off
set folder=D:\Test
for /f "tokens=2 delims=:" %%i in ('
dir "%folder%" /b /o-d /tc^| findstr /n "^"^| findstr /bv [1-4]:
') do (
del "%folder%\%%i"
)
exit /b

Den13V
10-04-2014, 17:39
Можешь расписать принцип его работы для чайника.
Точнее работы команды for, что с чем сравнивается?

Georgio
10-04-2014, 17:54
что с чем сравнивается? »

Ничто ни с чем. Просто из отсортированных по дате создания файлов оставляются только четыре самых "свежих".

Den13V
10-04-2014, 17:55
Ясно, спасибо.

SmiD55
20-02-2018, 13:41
А как сделать то же самое, но не просто удаление файлов старше 2-х часов, а файлов, создание которых по времени больше, чем время изменения папки, где они лежат? А то в таком варианте бэкапирование теряет смысл.. Сервак упал, очередные бэкапы не создаются, время идет, через два часа папка с резервными копиями пустая...

alpap
20-02-2018, 14:09
SmiD55,
в коде
по дате создания файлов оставляются только четыре самых "свежих" »
/tc »
сортировка по дате создания, если убрать этот ключ, останется (по умолчанию) /tw - по дате изменения

но вам похоже другая задача нужна
но этой вашей задачи пока никто ни видел ни слышал, если опишете полностью вашу задачу (вероятно стоит создать новую тему), ответят вам точнее

megaloman
20-02-2018, 16:18
из отсортированных по дате создания файлов оставляются только четыре самых "свежих". »Если каждые пол часа создаются бекапы. » и надо хранить бэкапы 2 часа, то нужно всего 4 последних.Сервак упал, очередные бэкапы не создаются, время идет, через два часа папка с резервными копиями пустая... » Да пусть хоть год сервер не делает бэкапы, но 4 последних самых свежих бэкапа годовой давности будут присутствовать, пока сервер не станет делать новые бэкапы. Вот еще вариант с той же идеей Georgio @Echo Off
Set "BoxArc=Z:\Box_Arc"
Set "FileBak=Half-Hour_time_??.??.??.bak"
Set /A NBak=4

FOR /F "usebackq skip=%NBak% delims=" %%f IN (`2^>nul Dir /B /A:-D /O:-D /T:C "%BoxArc%\%FileBak%"`) DO Del "%BoxArc%\%%f%"




© OSzone.net 2001-2012