Поводом для написания программы послужил случай у клиента, когда вечерний бэкап файловой базы данных 1с не был выполнен из-за большого совокупного размера файлов баз (упакованный архив занимал более 8 Гб) и вследствие этого - отсутствие свободного места на диске, так как копии архивных данных хранились за несколько дней, и хотя программа создания архивных копий следила за их количеством в каталоге архива, старые копии она отправляла в корзину. Пока на диске было место, и корзина периодически чистилась вручную администратором, проблем не было. Но как только администратор в какой-то момент не выполнил регламентных действий по очистке корзины – проблемы возникли. Появилось желание автоматизировать очистку корзины диска с условием удаления архивных файлов, размер которых превышает определенную величину (удаление файлов больше заданного размера).
Можно было, конечно, воспользоваться простейшими скриптами, очищающими всю корзину или файлы по шаблону. Но хотелось «точечно» удалять файлы архивов, не затрагивая интересы других пользователей, тем более, что под рукой был ранее написанный скрипт, очищающий каталоги файлового хранилища системы наблюдения, который удалял файлы старше определенной даты. Алгоритм работы скрипта прост – по сути это рекурсивный обход всех каталогов «корзин» указанных дисков. В коде AutoIT он выглядит следующим образом:
Полные тексты программ и откомпилированные модули для 64-х и 32-х версий приведены во вложении. Там представлен универсальный вариант (для Windows XP и Windows 7-2008) с возможностью задавать параметры в командной строке.
В нашем случае мы запускаем данную утилиту до начала рабочего дня по расписанию, системными средствами, через планировщик заданий. Поэтому, если кто-то случайно удалит свой большой архив в рабочее время - у него в запасе есть почти сутки для восстановления его из корзины.