Автоочистка временной папки
Наверное ни для кого не секрет, что в операционной
системе существуют временные папки, куда программы
складывают свои временные данные и благополучно о них
забывают. С течением времени эти временные папки
превращаются в одну большую свалку непонятно чего и
непонятно чьего. Рекомендуется периодически их
очищать и, как водится, вручную. Автоматизируем этот
процесс.
Для начала настроим пути к временным папкам. По
умолчанию они запрятаны довольно далеко: Documents and
Settings\<имя_пользователя>\Local settings\Temp. С моей точки
зрения, гораздо удобнее, когда эта папка (папки) лежат
где-нибудь «ближе к поверхности» и их число стремится
к 1. Для этого нам понадобится поковыряться в свойствах
системы. Правый щелчок по значку Мой компьтер,
закладка Дополнительно, кнопка Переменные среды.
![Свойства системы Свойства системы](images/007.png)
В открывшемся диалоговом окне Переменные среды
меняете как пользовательские, так и системные
переменные среды на желаемое значение. У меня,
например, все временные файлы складываются в папку D:\Temp.
![Переменные среды Переменные среды](images/008.png)
Полдела сделано, теперь найти свалку гораздо проще.
Решим теперь задачу автоматической очистки временной
папки. Для этого напишем довольно простой скрипт:
Сохраним его в, например, ClearTempFolder.bat. Всё, теперь
запуск этого пакетного файла удалит всё что возможно
из временной папки. А для автоматизации поместим ярлык
на этот пакетный файл в пункт Автозагрузка
главного меню. Теперь при каждом запуске компьютера
временная папка будет автоматически очищаться.
Примечание
Удаление данных - дело ответственное, будьте
предельно внимательны, ибо ошибка может дорогого
стоить. Расскажу о возможных последствиях, которые я
испытал «на собственной шкуре».
После очередной не совсем плановой переустановки Windows
(полетел жесткий диск) всё пришлось перенастраивать,
переустанавливать, перепрописывать и т.д. То же самое
произошло и с этим скриптом, который я довольно давно
успешно использую. После того, как я поместил ярлык в
автозагрузку, я выполнил скрипт вручную. Увидев
длиннющий отчет выполнения, я сначала удивился,
сколько мусора успело накопиться за несколько дней.
Потом я заметил, что удаление происходит не из
временной папки, удаляются мои документы! Похолодев, я
закрыл cmd.exe (эта утилита занимается выполнением
пакетных файлов) и отправился оценивать нанесенный
ущерб. А он оказался страшным: утерялась большая
половина документов, фотографий и т.д. В том числе
исчезла и база писем Outlook. Просмотр содержимого
корзины облегчения не принес - скрипт удаляет файлы «мимо»
корзины.
Спас меня Unerase Wizard из Norton Utilities компании Symantec.
Всё или нет удалось восстановить, сказать сейчас
сложно, так как учета документов я не веду, но
поверхностный осмотр утрат не выявил.
Теперь разберемся в причинах происшедшего и найдем,
как обезопасить себя от повторного проявления.
Как уже было сказано выше, ОС я переставил из-за
приобретения нового винчестера. Тогда же и переехала
временная папка. Поэтому результатом выполнения
команды
стало
Системе не удается найти указанный путь.
|
Текущая папка не сменилась, а осталась прежней (Мои
документы), зато следующая команда скрипта
исполнилась на ура.
Выводы
Никогда не помещайте скрипт удаления данных какой-либо
текущей папки в другую папку, в которой содержатся
данные. Лучше создайте для хранения этого скрипта
отдельную папку и поместите его туда. Тогда, даже если
текущая папка не сменится на временную, единственные
данные, которые будут удалены - это сам скрипт. И упаси
вас бог класть подобное богатство в корень диска! :) Ну
и, конечно, просто будьте внимательны.
Дополню.
Внимание - вещь полезная, но лучше все-таки
обезопасить себя насколько только возможно. Как
выяснилось, смена текущей папки - вещь крайне
ненадежная, запуск из FAR, например, привел к удалению
всего содержимого папки программы, какое только не
было заблокировано в момент вызова скрипта. Из этого
делаем вывод, что текущая реализация скрипта
недостаточно безопасна. Что ж, доработаем его.
Начнем с самого простого - вывода справки по команде del:
Удаление одного или нескольких файлов.
DEL [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена
ERASE [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена
имена Имена одного или нескольких файлов. Для удаления сразу
нескольких файлов используются подстановочные знаки.
Если указан каталог, из него будут удалены все файлы.
/P Запрос на подтверждение перед удалением каждого файла.
/F Принудительное удаление файлов, доступных только для чтения.
/S Удаление указанных файлов из всех подкаталогов.
/Q Отключение запроса на подтверждение при удалении файлов.
/A Отбор файлов для удаления по атрибутам.
атрибуты S Системные файлы R Доступные только для чтения
H Скрытые файлы A Файлы для архивирования
Префикс "-" имеет значение НЕ
Изменение команд DEL и ERASE при включении расширенной обработки команд:
Результаты вывода для ключа /S принимают обратный характер, то есть выводятся
только имена удаленных файлов, а не файлов, которые не удалось найти.
|
В справочной информации ключевыми для нас являются
слова "Для удаления сразу нескольких файлов
используются подстановочные знаки". Доработаем наш
скрипт (он до неприличия сократится):
Всё, теперь можно быть уверенным, что ничего лишнего
никогда не удалится, скрипт будет работать только в
заданной папке и ни в одной более. |