Bat-ник, для удаления файлов старше 30 дней по UNC пути.

аватар: KlimOFFFF
Звание: Наблюдатель
Сообщений: 76

Доброго времени суток, друзья.
Нужна помощь (вах как нужна). Необходимо создать bat-ник, который бы удалял файлы по истечению 30 дней ПОСЛЕ записи его на сетевой диск.
Есть готовый скрпит:

forfiles -p "\\setevoy_disk\Допуски\08 август" -s -m *.avi -d -30 -c "cmd /c del @path"

И тут вытекают следующие проблемы:

1. forfiles не работает через UNC пути.
2. При сканировании смотрится атрибут "Изменен", а нужно "Создан" или "Открыт". Так как дата его "Изменения" редко бывает корректна, эти файлы сразу же попадают под прицел.
Как обратить внимание на другие атрибуты сканера?

Что можете посоветовать, для решения этой проблемы? Политика компании запрещает установку стороннего ПО, который не входит в разрешенный перечень, по этому нужен bat-ник.

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

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

Версия 1.2

P.S. Вообще насколько мне помнится утилита делает следующее. Когда суммарный объем файлов превышает заданный, то утилита начинает их подчищать - удалять начинает самые старые. Будет удалять до тех пор, пока суммарный объем файлов не станет превышать заданный объем в утилите. Как-то так.
ВложениеРазмер
PurgeDir.rar 109.87 КБ
__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

В общем делать все равно было нечего. Обновил утилиту. По-молчанию удаление происходит по дате изменения файла. Я добавил два ключа [-ctime и -ltime]. Можно удалять по дате создания файла и по дате последнего доступа к файлу. Я не тестировал, но должно все работать. Желательно включить лог и потестить на какой-нибудь демонстрационной папке.

Версия 1.3

P.S. Только все равно конечно принцип другой у утилиты. Удаление не последних дней, а после превышение объема. Хотя может и это сделаю...

ВложениеРазмер
PurgeDir.rar 268.22 КБ
__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

В общем вот. Пока был энтузиазм. Добавил еще один ключ [-t], который позволяет удалять файлы старше чем заданное значение. Его можно использовать совместно с ключем [-s] или отдельно. Прогу протестировал, поэтому даже нашел несколько мелких багов. Все исправлено Wink

Версия 1.4

P.S. Насколько важно при удалении указывать маску файлов? Т.к. сейчас из каталога удаляются вообще все файлы без разбора, если они попадают под действие заданных параметров

ВложениеРазмер
PurgeDir.rar 268.15 КБ
__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

Ааааааа, пофик в общем. Одним ключом больше, одним - меньше. В общем добавил ключ [-m маска].

Версия 1.5

Тогда в твоем случае команда будет выглядеть так:
purgedir -d "\\setevoy_disk\Допуски\08 август" -t 30 -m *.avi -ctime

P.S. Если использовать маску файла, то будет некорректно считаться общий объем файлов в каталоге, т.к. изначально будет строиться список из файлов подпадающих под маску. Ну и пофик )))))

ВложениеРазмер
PurgeDir.rar 268.06 КБ
__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: DrBlack
Звание: Мастер
Сообщений: 1790

Вовка, ну ты и засранец... Laughing out loud

Хорошо работодатель твой не видит куда уходит весь твой энтузиазм )))

P.S.1.- а что, предварительно по маске *.* посчитать размер папки религия не позволяет? Smile
P.S.2.- ps1 можно вынести в отдельный параметр, так сказать опциональность повысить )))

__________________

Ни что так не ограничивает логику программиста, как компилятор... Wink



]]>]]>

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

DrBlack написал(а):

P.S.1.- а что, предварительно по маске *.* посчитать размер папки религия не позволяет? Smile

Два раза считать? Смысл? Надо по-другому делать. Но вот не хочу, т.к. изначально прога для другого предназначалась. Да и предполагаю, что маска особо и не нужна

P.S. Прога была написана в 2010 году. Пришлось немного попотеть над исходником, чтобы понять что я там натворил )))))))

__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: KlimOFFFF
Звание: Наблюдатель
Сообщений: 76

Так, Вовчик, я попробовал и у меня не пошло. Sad И количество дней менял, и ключи. Файлы остаются не тронутыми.Sad

аватар: Va-Bank
Звание: Гуру
Сообщений: 8223

А ты лог файл подключал? Ключ [-v] указывал? Я же не телепат, давай инфу из лога. Будем разбираться. И покажи командную строку, что ты прописал

__________________

Используя трассировку кода, можно избежать ламерских вопросов!

]]>]]>

аватар: KlimOFFFF
Звание: Наблюдатель
Сообщений: 76

Завтра все укажу. Про ключи я уже почитал у тебя в утилите. )

аватар: KlimOFFFF
Звание: Наблюдатель
Сообщений: 76

Вообщем, понял что за косяк был. У меня в тестовой папке были еще каталоги. Дело в том, что видео файлы регистратором нарезаются по 5 минут, и одно видео получается от двух до нескольких файлов. И что бы их как-то структурировать, приходится их объединять каталогом. Вот на этот каталог приложение и ругается.
Если просто указать каталог с имеющимися файлами, то удаляет на УРА. Но мне нужно, что бы еще и по каталогам шерстила.

Ошибка такую выдает лог:
16:38:17 04.10.2016 Начало работы программы
16:38:17 Построение списка файлов...
16:38:17 Построение списка файлов завершено
16:38:17 Сортировка списка файлов...
16:38:17 Сортировка списка файлов завершена
16:38:17 EAccessViolation: Access violation at address 004DA2EE in module 'PurgeDir.exe'. Read of address 00000008

Команда такая:

purgedir -r -d "D:\Видеоргеистраторы\Энергия" -t 30 -l Log.txt -m *.avi -ctime