Tôi không biết về bất kỳ tiện ích bổ sung nào của Explorer, nhưng giống như hầu hết mọi thứ trong Windows, điều này có thể được thực hiện với 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
}
Lưu tập lệnh này dưới dạng tệp văn bản có .ps1
phần mở rộng. Sau đó, bạn có thể sử dụng Trình lập lịch tác vụ để chạy việc này đều đặn.
Tuy nhiên, trước tiên, bạn cần cho phép thực thi các tập lệnh PowerShell, vì theo mặc định, bạn chỉ có thể thực thi các lệnh được nhập trực tiếp vào dấu nhắc PowerShell. Để thực hiện việc này, hãy mở PowerShell và nhập lệnh sau:
Set-ExecutionPolicy RemoteSigned
Nhập "y" hoặc "có" khi được nhắc. Xem Get-Help Set-ExecutionPolicy
để biết thêm thông tin.
Bây giờ hãy mở Trình lập lịch tác vụ và tạo một tác vụ mới với các tham số sau:
- Trong tab "Chung", nhập tên và chọn tùy chọn "Chạy với đặc quyền cao nhất"
- Trong tab "Kích hoạt", thêm trình kích hoạt mới và đặt tác vụ để chạy hàng ngày
- Trong tab "Hành động", thêm một hành động mới:
- để lại loại là "Bắt đầu một chương trình"
- đặt trường "Chương trình / tập lệnh" thành
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- đặt trường "Thêm đối số" thành
-NonInteractive -File "C:\path\to\script.ps1"
- Trong tab "Điều kiện", bỏ chọn "Chỉ bắt đầu tác vụ nếu máy tính bật nguồn AC"
Giải thích từng dòng của kịch bản:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Điều này nhận được một danh sách tất cả các ổ đĩa trong máy tính và lần lượt từng vòng lặp. Các -PSProvider FileSystem
tham số được yêu cầu ổ đĩa trở lại mà thôi, bởi vì PowerShell cũng có pseudodrives cho những thứ khác nhau như tâm đăng ký.
Để biết thêm thông tin, hãy xem Get-Help Get-PSDrive
và hướng dẫn này về xử lý vòng lặp trong PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Điều này xây dựng đường dẫn đến thư mục Thùng rác trên ổ đĩa hiện tại. Lưu ý việc sử dụng các trích dẫn đơn xung quanh phần thứ hai, để ngăn PowerShell diễn giải $Recycle
dưới dạng một biến.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Điều này trả về tất cả các tệp và thư mục con theo đường dẫn đã cho (cái mà chúng ta đã xây dựng bằng lệnh trước đó). Các -Force
tham số là cần thiết để đi vào các thư mục ẩn và hệ thống, và các -Recurse
thông số làm cho các đệ quy lệnh, tức là. vòng lặp thông qua tất cả các thư mục con là tốt. -ErrorAction
là một tham số tiêu chuẩn cho hầu hết các lệnh PowerShell và giá trị SilentlyContinue
làm cho lệnh bỏ qua lỗi. Mục đích của việc này là để ngăn lỗi cho các ổ đĩa đã được cấu hình để xóa các tệp ngay lập tức. Các |
biểu tượng tại các đường ống cuối rất kết quả cho lệnh tiếp theo; Tôi chia nó thành nhiều dòng để dễ đọc hơn.
Để biết thêm thông tin, xem Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Điều này chỉ đơn giản là lọc các kết quả từ lệnh trước đó và chỉ trả về những kết quả cũ hơn 30 ngày. $_
đề cập đến đối tượng hiện đang được xử lý và thuộc LastWriteTime
tính trong trường hợp này đề cập đến ngày và thời gian tệp bị xóa. Get-Date
trả về ngày hiện tại
Để biết thêm thông tin, xem Get-Help Where-Object
và Get-Help Get-Date
.
Remove-Item -Recurse
Điều này chỉ đơn giản là xóa các mục được truyền cho nó bởi lệnh trước đó. Các -Recurse
tham số tự động xóa các nội dung của các thư mục con không rỗng; không có nó, bạn sẽ được nhắc cho các thư mục như vậy.
Để biết thêm thông tin, xem Get-Help Remove-Item
.