Nie znam żadnych dodatków Explorer, ale podobnie jak większość rzeczy w systemie Windows, można to zrobić za pomocą programu 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
}
Zapisz ten skrypt jako plik tekstowy z .ps1rozszerzeniem. Następnie możesz użyć Harmonogramu zadań, aby uruchamiać to w regularnych odstępach czasu.
Najpierw jednak musisz zezwolić na wykonywanie skryptów PowerShell, ponieważ domyślnie możesz wykonywać tylko polecenia wpisane bezpośrednio w monicie PowerShell. Aby to zrobić, otwórz PowerShell i wpisz następujące polecenie:
Set-ExecutionPolicy RemoteSigned
Po wyświetleniu monitu wpisz „y” lub „tak”. Zobacz Get-Help Set-ExecutionPolicywięcej informacji.
Teraz otwórz Harmonogram zadań i utwórz nowe zadanie z następującymi parametrami:
- Na karcie „Ogólne” wpisz nazwę i zaznacz opcję „Uruchom z najwyższymi uprawnieniami”
- Na karcie „Wyzwalacze” dodaj nowy wyzwalacz i ustaw uruchamianie zadania codziennie
- Na karcie „Działania” dodaj nową akcję:
- pozostaw typ „Uruchom program”
- ustaw pole „Program / skrypt” na
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- ustaw pole „Dodaj argumenty” na
-NonInteractive -File "C:\path\to\script.ps1"
- Na karcie „Warunki” usuń zaznaczenie opcji „Uruchom zadanie tylko wtedy, gdy komputer jest zasilany prądem przemiennym”
Objaśnienie skryptu wiersz po wierszu:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Spowoduje to wyświetlenie listy wszystkich dysków w komputerze i pętli jeden po drugim. Ten -PSProvider FileSystemparametr jest wymagany tylko do zwracania napędów dysków, ponieważ PowerShell ma również pseudodyski do różnych innych rzeczy, takich jak gałęzie rejestru.
Aby uzyskać więcej informacji, zobacz Get-Help Get-PSDrivei ten poradnik na przetwarzanie pętlowe w PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
To konstruuje ścieżkę do folderu Kosz na bieżącym dysku. Zwróć uwagę na użycie pojedynczych cudzysłowów wokół drugiej części, aby zapobiec interpretacji programu PowerShell $Recyclejako zmiennej.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Zwraca wszystkie pliki i podfoldery pod podaną ścieżką (tą, którą zbudowaliśmy za pomocą poprzedniego polecenia). -ForceParametr jest potrzebne, aby przejść do folderów ukrytych i systemowych, a -Recurseparametr sprawia rekurencyjnego polecenia, tzn. przeglądaj także wszystkie podkatalogi. -ErrorActionjest standardowym parametrem dla większości poleceń PowerShell, a wartość SilentlyContinuepowoduje, że polecenie ignoruje błędy. Ma to na celu zapobieganie błędom dla dysków skonfigurowanych do natychmiastowego usuwania plików. |Symbol na samych rur wyniki do następnego polecenia; Podzieliłem go na kilka wierszy dla lepszej czytelności.
Aby uzyskać więcej informacji, zobacz Get-Help Get-ChildItem.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
To po prostu filtruje wyniki z poprzedniego polecenia i zwraca tylko te, które są starsze niż 30 dni. $_odnosi się do aktualnie przetwarzanego obiektu, a LastWriteTimewłaściwość w tym przypadku odnosi się do daty i godziny usunięcia pliku. Get-Datezwraca bieżącą datę.
Aby uzyskać więcej informacji, zobacz Get-Help Where-Objecti Get-Help Get-Date.
Remove-Item -Recurse
To po prostu usuwa elementy przekazane mu przez poprzednie polecenie. Ten -Recurseparametr automatycznie usuwa zawartość niepustych podfolderów; bez niego zostaniesz poproszony o takie foldery.
Aby uzyskać więcej informacji, zobacz Get-Help Remove-Item.