Своп и мусор неизбежен как крах капитализма. Если же со спамом как-то еще и можно бороться, устанавливая фильтры на почтовых ящиках, храня свой e-mail в строгом секрете даже от друзей, то проконтролировать процесс появления мусора на вашем жестком диске намного сложнее. Ставите вы какую-нибудь программу и не подозреваете, что кроме нужных файлов она копирует на винт еще пару десятков txt’шек, diz’ов, bak’ов и тому подобной полезности. Не станете же вы проверять вручную все папки после установки каждой программы!
Примерно месяца три назад я купил просто огромный по сравнению с моей предыдущей двадцаткой винт — Samsung 60 Гб. Через два месяца винда начала выдавать мне сообщения — «Недостаточно места на диске D», предлагая провести очистку от ненужных файлов. Результаты очистки превзошли все мои ожидания — удалось очистить целых 69 Кб!!! Мне что-то не верилось, что это и есть весь тот мусор, от которого можно безболезненно избавится. Я начал искать по очереди файлы с расширением .tmp, .bak, .old и т.д. Процедура довольно-таки нудная, но зато позволила очистить еще около 20 Мб.
Выполнять эту муторную работу изо дня в день мне не очень хотелось, и я полез в Интернет за софтом, который позволил бы автоматизировать процесс поиска мусора и избавления от него. Особого труда найти такие программы не составило. А вот избавится от мусора с их помощью…
Большинство скачанных мной программ занимали от полуметра до двух. То есть, предлагалось установить 2-Мб программу, которая добавит в Винду пару десятков dll’ок и избавит вас примерно от такого же количества мусора. Да… В моем понимании подобная программа должна быть маленькой, состоять по возможности из одного файла и не перемешивать себя с системой. Ведь зачем нужны кучи bmp’шек, dll’лок, wav’ов, идущих в комплекте с единственной нужной функцией? Для улучшения интерфейса и для того, чтобы по завершении работы программа пропищала вам какую-то незамысловатую мелодию. Производители явно не поняли, зачем они это пишут. Вряд ли кто-то ставит подобные программы, чтобы услаждать свой слух их изысканным писком.
Я не хочу сказать, что все программы-мусоросборники подобны описанным выше. Просто мне не удалось найти ничего приличного. Но, как говорится, лень — двигатель прогресса. Именно лень и побудила меня к написанию данной программы.
Условия, которым, она должна была отвечать — малый размер, быстрый поиск мусора.
Сдув пыль с давно забытой папки BPascal я ловким движением руки накропал следующее:
{Название программы} Program Clear; {Подключаем модуль DOS.TPU} Uses DOS; {Описываем глобальные переменные} Var F:text; {Значение счетчика записи из массива расширений} number_ext:integer; i:integer; {Описываем константы} Const {Количество записей в массиве расширений} kolvo_ext=7; {Собственно, сам массив расширений. Количество записей обязательно должно быть равно константе kolvo_ext!} {Синтаксис записи в массив — маски файлов, взятые в одинарные кавычки через запятую, например, '1', '2', '3', '…'} musor:array[1..kolvo_ext] of string [12] = ('*.~*','*.bak','*.diz','*.nfo','~*.*','*.tmp','thumbs.*'); {Процедура записи имен с путями «мусорных» файлов в BAT-файл} Procedure Musor_to_file(path,mask:string); {Описываем локальные переменные} Var search_musor:searchrec; Begin {Поиск файлов по маске} findfirst(path+mask,anyfile-directory,search_musor); {Если найдены файлы с указанной маской (маска хранится в переменной MASK, то...)} while doserror=0 do begin {Выводим путь и имя файла на экран. В принципе, эта строка не очень нужна, и если ее убрать, то это сэкономит несколько секунд при поиске} WriteLn(path+search_musor.name); {Записать в BAT-файл строки вида DEL путь+имя файла} WriteLn(F,'del ',path+search_musor.name); {ищем следующий файл} findnext(search_musor); end; end; {Рекурсивная процедура поиска файлов по маске} Procedure SearchFiles(path,mask:string); {Описываем локальные переменные} Var search_musor:searchrec; begin {Вызов процедуры записи «мусорных файлов» в батник} Musor_to_file(path,mask); findfirst(path+'*.*',anyfile, search_musor); while doserror=0 do begin if (search_musor.attr and directory=directory) and (search_musor.name<>'.') and (search_musor.name<>'..') then SearchFiles(path+search_musor.name+'\',mask); findnext(search_musor); end; end; {НАЧАЛО ПРОГРАММЫ} begin {Присваиваем имя файлу, который собираемся открыть} Assign(F,'clear.bat'); {Открываем файл для записи. Если файл есть, то он создается заново} ReWrite(F); {перебор масок «мусорных» файлов из массива musor} for number_ext:=1 to kolvo_ext do begin {Чтение параметра командной строки} for I := 1 to ParamCount do {Поиск файлов на диске, имя которого читается из командной строки с параметром, полученным из массива musor} SearchFiles(ParamStr(I),musor[number_ext]); end; {Закрытие батника} Close(F); {КОНЕЦ ПРОГРАММЫ} end.
Параметры запуска программы: CLEAR.EXE имя диска (естественно, если вы назовете программу CLEAR). Например:
CLEAR.EXE C:\
Саму программу можно запускать из-под Винды, а вот батник желательно из-под ДОСа. Просто Винда не даст вам стереть некоторые временные файлы, которые, по ее мнению, ей нужны. Но мы-то с вами знаем, что это не так :-). Если же вы запустите программу в ДОСе, то не забудьте заранее запустить smartdrv.exe, иначе скорость поиска упадет раз в десять по сравнению с поиском в Винде.
Результатом работы программы является файл clear.bat, появляющийся в той же папке, где находится clear.exe. Зачем он нужен, почему сразу не удалять файлы? Да просто для того, чтобы перед его запуском вы смогли его отредактировать — вдруг в список удаления попал ваш любимый .bak или .tmp :-).
Пользовательский интерфейс? А нужен ли он вообще? Если статья и затронутая проблема найдет отклик в сердцах читателей, могу продолжить эту тему и в следующей статье написать программу интерфейса для этой мусороискалки, а ее немного изменить ее код, для того чтобы она брала маски файлов не из массива, а из файла.
Программа шареваре-условно-бесплатна. То есть, вы можете пользоваться ей в течение 30 дней. Если же она вам понравится, то можете пользоваться и дальше :-). Еще вы можете заплатить. Условно, разумеется :-).
Соответствует ли программа этим требованиям? Размер — 5 Кб. Время поиска на диске D: (занято 51 Гб из 57 Гб, 89 824 файла) — 15 секунд. Впечатляет? Я думаю, да. И, скромно опустив глаза, добавляю: программа получилась знатная.
ЗЫ: Автор не несет никакой ответственности за проблемы, связанные с использованием данной программы. Внимательно проверьте маски файлов, которые вы включили в массив масок. Учтите, что некоторые на первый взгляд ненужные файлы необходимы для работы некоторых программ. Запуская на выполнение файл clear.bat, вы действуете на свой страх и риск.
