Со временем компьютер забивается: временные файлы, кэш, остатки от программ, которые вы уже удалили — всё это копится и реально тормозит систему. Особенно заметно на машинах с небольшим SSD — место заканчивается быстро, а вместе с этим начинаются задержки при запуске, при обновлении, при записи файлов. Самый простой выход — не чистить вручную, а настроить автоматическую очистку по расписанию. Планировщик задач Windows прекрасно с этим справляется, и вам не нужно ставить сторонние утилиты вроде CCleaner — хотя о них я тоже скажу пару слов.

01Зачем вообще автоматизировать

Если вы заходите раз в пару дней и вручную нажимаете «Очистить корзину» и «Удалить временные файлы» — скорее всего, вы делаете это не так часто, как нужно. Корзина может раздуться до десятков гигабайт, особенно если вы работаете с видео или тяжёлыми проектами. Папка Temp тоже любит разрастаться: некоторые программы создают временные файлы, но забывают их удалять.

Автоматизация решает несколько задач:

  • Освобождается место на диске без вашего участия.
  • Система работает стабильнее — нет конфликтов при обновлениях из-за нехватки места.
  • Вы перестаёте об этом думать.

02Подготовка: что нужно очищать и где это лежит

Прежде чем пихать команды в планировщик, надо понять, что именно мы будем чистить. Вот основные цели:

  • Корзина — по умолнию хранит удалённые файлы и может занимать значительный объём диска.
  • Временные файлы Windows — обычно в C:\Windows\Temp.
  • Пользовательские временные файлы — в %USERPROFILE%\AppData\Local\Temp.
  • Кэш браузеров — если хотите освобождать ещё больше места.
  • Файл гибернации — если не используете гибернацию, его можно удалять (это сэкономит несколько гигабайт).
  • Папка загрузок — не удалять всё, но можно настроить удаление старых файлов, которым больше 30 дней.

03Создание скрипта для очистки на основе PowerShell

Почему именно он? Командная строка умеет очищать корзину через команду Clear-RecycleBin — это быстро и без лишних заморочек. А PowerShell даёт больше гибкости для работы с временными файлами, потому что там просто написать условия и исключения.

Базовый PowerShell-скрипт

Скопируйте этот текст в Блокнот и сохраните с расширением .ps1. Например, cleanup.ps1:

# Очищаем корзину текущего пользователя
Clear-RecycleBin -Force -ErrorAction SilentlyContinue

# Удаляем временные файлы Windows старше 1 дня
Get-ChildItem -Path "env:TEMP" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object_.LastWriteTime -lt (Get-Date).AddDays(-1) } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

# Удаляем системные временные файлы старше 1 дня
Get-ChildItem -Path "C:\Windows\Temp" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-1) } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

# Очищаем кэш обновлений Windows (если нужно)
Get-ChildItem -Path "C:\Windows\SoftwareDistribution\Download" -Recurse -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

Что здесь происходит: мы очищаем корзину без запроса подтверждения, удаляем из Temp всё, что старше 24 часов, и делаем то же самое для системной папки Temp. Параметр -ErrorAction SilentlyContinue нужен, чтобы скрипт не падал на заблокированных файлах — некоторые процессы держат временные файлы заблокированными, и удалять их всё равно нельзя.

Если хотите ещё и корзину на всех дисках

Базовая команда очищает корзину для текущего пользователя на всех дисках, но если у вас несколько учётных записей или вы хотите гарантированно почистить всё — можно добавить более агрессивный вариант:

# PowerShell-скрипт для расширенной очистки
# Создайте файл cleanup-advanced.ps1

# 1. Корзина на всех дисках
$shell = New-Object -ComObject Shell.Application
rb =shell.NameSpace(0x0a)
rb.Items() | ForEach-Object Remove-Item -Path_.Path -Recurse -Force -ErrorAction SilentlyContinue }

# 2. Пользовательский Temp
$tempPath = [System.IO.Path]::GetTempPath()
Get-ChildItem -Path tempPath -Recurse -Force -ErrorAction SilentlyContinue | Where-Object_.LastWriteTime -lt (Get-Date).AddDays(-1) } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

# 3. Системный Temp
Get-ChildItem -Path "C:\Windows\Temp" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-1) } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

# 4. Prefetch
Get-ChildItem -Path "C:\Windows\Prefetch" -Force -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue

# 5. Недавние файлы (Recent Items)
Get-ChildItem -Path "$env:APPDATA\Microsoft\Windows\Recent" -Force -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue

# 6. Кэш缩略图 (Thumbnail Cache)
Get-ChildItem -Path "$env:LOCALAPPDATA\Microsoft\Windows\Explorer" -Filter "thumbcache_*" -Force -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue

Этот скрипт обширнее: он чистит не только Temp и корзину, но и prefetch-файлы, недавние документы, кэш миниатюр проводника. Это совершенно безопасно — все эти данные генерируются заново при необходимости.

04Как добавить скрипт в планировщик задач

Теперь самое интересное — настроим автоматический запуск. Откройте «Планировщик заданий» (Task Scheduler) через поиск или командой taskschd.msc.

  1. В правой панели выберите «Создать задачу» (Create Task), а не «Создать простую задачу» — там меньше настроек.
  2. На вкладке «Общие» дайте задаче понятное имя, например «Автоочистка диска».
  3. Поставьте галочку «Выполнять с наивысшими привилегиями» — иначн корзина может не почиститься.
  4. На вкладке «Триггеры» нажмите «Создать» и выберите расписание. Рекомендую еженедельно в 3 часа ночи — в это время компьютер обычно простаивает.
  5. На вкладке «Действия» нажмите «Создать».

В поле «Программа или скрипт» введите:

powershell.exe

В поле «Добавить аргументы»:

-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\cleanup.ps1"

Путь к скрипту укажите тот, где вы сохранили файл. Параметр -ExecutionPolicy Bypass обходит ограничения на запуск скриптов — без него Windows может заблокировать выполнение. -NoProfile ускоряет запуск, не загружая профиль пользователя.

  1. На вкладке «Условия» уберите галочку «Выполнять только при питании от сети», если у вас ноутбук и вы хотите, чтобы очистка срабатывала и от батареи.
  2. На вкладке «Параметры» можно поставить «При опоздании запускать как можно скорее», чтобы задача не пропускалась, если компьютер был выключен.

Нажмите ОК. Задача сохранена. Хотите проверить — нажмите правой кнопкой и выберите «Выполнить».

05Альтернативный вариант: через командную строку

Если PowerShell кажется избыточным, можно использовать штатную утилиту cleanmgr (Disk Cleanup) с параметрами командной строки:

cleanmgr /sagerun:1

Предварительно нужно один раз настроить параметры:

  1. Запустите cleanmgr /sageset:1 — откроется окно с чекбоксами.
  2. Отметьте всё, что хотите очищать: временные файлы, корзину, кэш обновлений, файлы дампа памяти, и т.д.
  3. Нажмите ОК. Настройки сохраняются в реестре под номером 1.
  4. Теперь cleanmgr /sagerun:1 будет запускать очистку автоматически, без окон и запросов.

Добавить в планировщик ещё проще: программа cleanmgr, аргументы /sagerun:1. Но этот метод менее гибкий — вы не сможете задать условия вроде «удалять только файлы старше N дней».

06Сравнение подходов

Критерий PowerShell-скрипт cleanmgr /sagerun Сторонние утилиты
Гибкость Высокая — любые папки, любые условия Низкая — только то, что есть в списке Средняя — зависит от программы
Безопасность Зависит от вас: можно случайно удалить лишнее Высокая — штатный механизм Windows Разная, есть риск перейти на мусорные программы
Необходимость настройки Нужно написать или скопировать скрипт Один раз нажать чекбоксы Установить и настроить программу
Контроль над логикой Полный Минимальный Частичный
Подходит для нескольких пользователей Да, если настроить права Нет — настройки для каждого пользователя отдельно Зависит от программы

07Что выбрать в зависимости от вашей ситуации

У вас один компьютер, вы не хотите заморачиваться со скриптами. Используйте cleanmgr /sagerun:1 через планировщик. Настроили один раз — и забыли. Места освободится достаточно, система будет чувствовать себя бодрее.

Хотите тонко настроить, что именно чистится и по каким правилам. PowerShell-скрипт — ваш выбор. Можно добавить очистку кэша конкретного браузера, удаление логов определённых программ, архивирование старых файлов.

У вас несколько компьютеров дома или в офисе. Скрипт PowerShell, запускаемый через планировщик от имени администратора, проще всего развернуть на нескольких машинах — скопируйте один файл.

Вы не уверены, что не навредите себе скриптом. Начните со встроенной функции очистки диска. Это безопаснее, и вы не сможете случайно удалить что-то нужное.

08Частые ошибки при настройке

Запуск без прав администратора. Если задача запускается от обычного пользователя, корзина может не очиститься, а доступ к системной папке Temp будет ограничен. Всегда ставьте галочку «Выполнять с наивысшими привилегиями».

Удаление всего из Temp без фильтра по возрасту. Если удалить все файлы из Temp, включая те, которые созданы сегодня используемой программой, — программа может аварийно завершиться. Всегда добавляйте условие по дате: удалять только то, что не трогали больше суток.

Использование сторонних «оптимизаторов» с сомнительной репутацией. Многие из них не только чистят мусор, но и могут удалить нужные файлы, изменить настройки системы, а некоторые ещё и показывают навязчивую рекламу. Если и использовать — то только проверенные утилиты с хорошими отзывами.

09Рекомендации: как лучше сделать

  • Храните скрипты в одном месте, например C:\Scripts\. Не разбрасывайте по рабочему столу.
  • Перед первым запуском сделайте точку восстановления — на всякий случай.
  • Проводите тестовый запуск вручную и проверьте, что удалилось. Если что-то важное пропало — скорректируйте скрипт.
  • Не ставьте очистку слишком часто — еженедельно достаточно. Ежедневная очистка нужна только если вы постоянно работаете с огромными объёмами данных.
  • Добавьте в скрипт логирование — хотя бы запись времени последнего выполнения в текстовый файл, чтобы видеть, что задача реально срабатывает.

Пример простого логирования в конец скрипта:

$logPath = "C:\Scripts\cleanup.log"
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path logPath -Value "timestamp - Очистка выполнена"

10Что делать, если задача не запускается

Самая частая причина — политика выполнения скриптов. Если вы не добавили -ExecutionPolicy Bypass в аргументы, Windows заблокирует скрипт. Вторая причина — путь к скрипту содержит пробелы. В этом случае заключите путь в кавычки:

-File "C:\My Scripts\cleanup.ps1"

Третья причина — антивирус. Некоторые антивирусы блокируют PowerShell-скрипты. Если после запуска ничего не происходит и в журнале нет записей — проверьте журнал антивируса.

11Итог

Настроить автоматическую очистку корзины и временных файлов через планировщик задач — дело на 10–15 минут. Если вы не хотите углубляться в скрипты — используйте cleanmgr /sagerun:1. Если нужен контроль и гибкость — напишите PowerShell-скрипт по примеру выше. Главное — не забывать про права администратора и фильтр по возрасту файлов в Temp-папках. После первой же недели вы заметите, что на диске появилось свободное место, а система стала отзывчивее.

Проверяем сообщения об ошибках и отмечаем существенные исправления в материале.