Saya tidak tahu adanya add-on Explorer, tetapi seperti kebanyakan hal di Windows, ini bisa dilakukan dengan 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
}
Simpan skrip ini sebagai file teks dengan .ps1
ekstensi. Anda kemudian dapat menggunakan Penjadwal Tugas untuk menjalankan ini secara berkala.
Namun, pertama-tama, Anda harus mengizinkan eksekusi skrip PowerShell, karena secara default Anda hanya dapat menjalankan perintah yang diketik langsung ke prompt PowerShell. Untuk melakukan ini, buka PowerShell dan ketik perintah berikut:
Set-ExecutionPolicy RemoteSigned
Ketik "y" atau "ya" saat diminta. Lihat Get-Help Set-ExecutionPolicy
untuk informasi lebih lanjut.
Sekarang buka Penjadwal Tugas dan buat tugas baru dengan parameter berikut:
- Di bawah tab "Umum", masukkan nama dan centang opsi "Jalankan dengan hak istimewa tertinggi"
- Di bawah tab "Pemicu", tambahkan pemicu baru dan tetapkan tugas untuk dijalankan setiap hari
- Di bawah tab "Tindakan", tambahkan tindakan baru:
- biarkan tipenya sebagai "Mulai program"
- setel bidang "Program / skrip" ke
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- setel bidang "Tambahkan argumen" ke
-NonInteractive -File "C:\path\to\script.ps1"
- Di bawah tab "Ketentuan", hapus centang "Mulai tugas hanya jika komputer menggunakan daya AC"
Penjelasan skrip baris demi baris:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Ini mendapatkan daftar semua drive di komputer dan loop melalui mereka satu per satu. The -PSProvider FileSystem
parameter yang diperlukan untuk hanya kembali disk drive, karena PowerShell juga memiliki pseudodrives untuk berbagai hal lain seperti gatal-gatal registri.
Untuk informasi lebih lanjut, lihat Get-Help Get-PSDrive
dan tutorial ini tentang pemrosesan loop di PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Ini membangun jalur ke folder Keranjang Sampah di drive saat ini. Perhatikan penggunaan tanda kutip tunggal di sekitar bagian kedua, untuk mencegah PowerShell dari menafsirkan $Recycle
sebagai variabel.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Ini mengembalikan semua file dan subfolder di bawah jalur yang diberikan (yang kami buat dengan perintah sebelumnya). The -Force
parameter yang dibutuhkan untuk masuk ke folder tersembunyi dan sistem, dan -Recurse
parameter membuat perintah rekursif, yaitu. loop melalui semua subdirektori juga. -ErrorAction
adalah parameter standar untuk sebagian besar perintah PowerShell, dan nilainya SilentlyContinue
membuat perintah mengabaikan kesalahan. Tujuannya adalah untuk mencegah kesalahan pada drive yang telah dikonfigurasi untuk segera menghapus file. The |
simbol di pipa akhir sangat hasilnya ke perintah berikutnya; Saya membaginya menjadi beberapa baris untuk keterbacaan yang lebih baik.
Untuk informasi lebih lanjut, lihat Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Ini cukup menyaring hasil dari perintah sebelumnya dan hanya mengembalikan yang lebih dari 30 hari. $_
mengacu pada objek yang sedang diproses, dan LastWriteTime
properti dalam hal ini mengacu pada tanggal dan waktu file itu dihapus. Get-Date
mengembalikan tanggal saat ini.
Untuk informasi lebih lanjut, lihat Get-Help Where-Object
dan Get-Help Get-Date
.
Remove-Item -Recurse
Ini hanya menghapus item yang diteruskan oleh perintah sebelumnya. The -Recurse
parameter secara otomatis menghapus isi subfolder non-kosong; tanpa itu, Anda akan diminta untuk folder seperti itu.
Untuk informasi lebih lanjut, lihat Get-Help Remove-Item
.