Показать полную графическую версию : [решено] Ежедневное удаление определенного каталога (через крон)
Добрый всем.
Помогите пожалуйста.
Есть каталог на сетевом диске, внутри папки с датами (вот такого образца - X:\192.168.10.230\2017-06-04)
Батник будет запускаться раз в день кронтабом.
Нужно удалить самую старую папку (к примеру 4 папки 2017-06-01 / 2017-06-02 / 2017-06-03 / 2017-06-04 , удалить 2017-06-01).
кронтаб и батник - на одной платформе обычно не встречаются :-)
а если и встречаются - не лучшая идея совместно их использовать
Нужно удалить самую старую папку (к примеру 4 папки 2017-06-01 / 2017-06-02 / 2017-06-03 / 2017-06-04 , удалить 2017-06-01). »
«Самую старую»:
по имени;
по дате создания;
по дате модификации?
«Самую старую»:
по имени;
по дате создания;
по дате модификации? »
либо по имени, либо по дате создания, (наверное не важно?) так как имена соответствуют датам создания
megaloman
11-07-2017, 13:49
loromir, не кажется ли Вам, что эта постановка задачи опасна? Не лучше ли оставлять не менее некоторого количества самых новых папок?
megaloman, количество - тоже не сказать, что оптимальная постановка задачи. Лучше и срок давности, и количество проверять.
так как имена соответствуют датам создания »
не лучшая практика
Дело в том что это папки с записями с видео регистратора и посему нужны "по максимум все" возможные записи.
Видео регистратор не самый "продвинутый" и максимум что я могу там указать - это только путь. Куда записывать =( .
Перезаписывать на "стороннем" хранилище он тоже не умеет((
Сейчас хранилище заполнилось по максимум и поэтому каждый день приходится удалять самую старую папку. (как если бы видео регистратор перезаписывал старые записи)
Поэтому и такая постановка задачи, при каждом запуске удалять одну самую старую папку. А запускать буду раз в день. Как то так...
megaloman
11-07-2017, 18:27
loromir, Если речь идёт о традиционных батниках, то:
@Echo Off
Set "BoxIn=X:\192.168.10.230"
Set "Mask=20??-??-??"
Set /A N=30
FOR /F "usebackq Skip=%N% delims=" %%d IN (`Dir "%BoxIn%\%Mask%" /A:D /B /O:-N 2^>nul`) DO RD /S /Q "%BoxIn%\%%d"
@Echo Off
Set "BoxIn=X:\192.168.10.230"
Set "Mask=20??-??-??"
FOR /F "usebackq delims=" %%d IN (`Dir "%BoxIn%\%Mask%" /A:D /B /O:N 2^>nul`) DO RD /S /Q "%BoxIn%\%%d" &GoTo :Eof
Почему мне это не нравится: по какой-то причине папки перестали писаться, а батник продолжает отрабатывать. Получим по максимуму вообще ничего. Можно ведь сообразить, сколько дней Вы можете позволить себе сохранять, с учетом того, что некоторое свободное место должно оставаться. А под завязку забивать пространство тоже опасно - а вдруг места на самое свеженькое (ИМХО, потому и самое важное) не хватит.
Если оставить гарантированное число папок, запускайте батник хоть сто раз на дню, беды не будет.
При работе батника "старость" папок определял по имени.
megaloman, супер!!! Спасибо большое! =))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.