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 .ps1
rozszerzeniem. 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-ExecutionPolicy
wię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 FileSystem
parametr 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-PSDrive
i 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 $Recycle
jako 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). -Force
Parametr jest potrzebne, aby przejść do folderów ukrytych i systemowych, a -Recurse
parametr sprawia rekurencyjnego polecenia, tzn. przeglądaj także wszystkie podkatalogi. -ErrorAction
jest standardowym parametrem dla większości poleceń PowerShell, a wartość SilentlyContinue
powoduje, ż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 LastWriteTime
właściwość w tym przypadku odnosi się do daty i godziny usunięcia pliku. Get-Date
zwraca bieżącą datę.
Aby uzyskać więcej informacji, zobacz Get-Help Where-Object
i Get-Help Get-Date
.
Remove-Item -Recurse
To po prostu usuwa elementy przekazane mu przez poprzednie polecenie. Ten -Recurse
parametr automatycznie usuwa zawartość niepustych podfolderów; bez niego zostaniesz poproszony o takie foldery.
Aby uzyskać więcej informacji, zobacz Get-Help Remove-Item
.