Я не знаю жодних додатків 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" або "так". Див. Для 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
.