Я не знаю каких-либо надстроек Explorer, но, как и большинство вещей в Windows, это можно сделать с помощью PowerShell:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
$Path = $Drive.Name + ':\$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -Recurse
}
Сохраните этот скрипт как текстовый файл с .ps1
расширением. Затем вы можете использовать планировщик заданий для регулярного запуска.
Однако сначала необходимо разрешить выполнение сценариев PowerShell, поскольку по умолчанию вы можете выполнять только команды, введенные непосредственно в приглашение PowerShell. Для этого откройте PowerShell и введите следующую команду:
Set-ExecutionPolicy RemoteSigned
В ответ на запрос введите «y» или «yes». Смотрите Get-Help Set-ExecutionPolicy
для получения дополнительной информации.
Теперь откройте планировщик заданий и создайте новое задание со следующими параметрами:
- На вкладке «Общие» введите имя и установите флажок «Запускать с наивысшими привилегиями».
- На вкладке «Триггеры» добавьте новый триггер и настройте задачу на ежедневное выполнение.
- На вкладке «Действия» добавьте новое действие:
- оставьте тип как «Запустить программу»
- установите в поле «Программа / скрипт» значение
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- установите поле «Добавить аргументы» в
-NonInteractive -File "C:\path\to\script.ps1"
- На вкладке «Условия» снимите флажок «Запускать задачу, только если компьютер подключен к сети переменного тока».
Пошаговое объяснение сценария:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Это получает список всех дисков в компьютере и проходит через них один за другим. -PSProvider FileSystem
Параметр необходим только дисководы возврата, потому что PowerShell также pseudodrives для различных других вещей , как улья реестра.
Для получения дополнительной информации см. Get-Help Get-PSDrive
И этот учебник по обработке циклов в PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Это создает путь к папке корзины на текущем диске. Обратите внимание на использование одинарных кавычек вокруг второй части, чтобы предотвратить интерпретацию PowerShell $Recycle
как переменной.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Это возвращает все файлы и подпапки по заданному пути (тот, который мы создали с помощью предыдущей команды). -Force
Параметр необходим , чтобы войти в скрытые и системные папки, а -Recurse
параметр делает команду рекурсивной, то есть. цикл через все подкаталоги, а также. -ErrorAction
является стандартным параметром для большинства команд PowerShell, и это значение SilentlyContinue
заставляет команду игнорировать ошибки. Целью этого является предотвращение ошибок для дисков, которые были настроены на немедленное удаление файлов. |
Символ в самом конце трубы результаты к следующей команде; Я разделил его на несколько строк для лучшей читаемости.
Для получения дополнительной информации см Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Это просто фильтрует результаты предыдущей команды и возвращает только те, которые старше 30 дней. $_
ссылается на объект, обрабатываемый в данный момент, а LastWriteTime
свойство в этом случае ссылается на дату и время, когда файл был удален. Get-Date
возвращает текущую дату.
Для получения дополнительной информации см Get-Help Where-Object
и Get-Help Get-Date
.
Remove-Item -Recurse
Это просто удаляет элементы, переданные ему предыдущей командой. -Recurse
Параметр автоматически удаляет содержимое непустых вложенных папок; без этого вам будет предложено для таких папок.
Для получения дополнительной информации см Get-Help Remove-Item
.