PowerShell 3
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item
PowerShell 2
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Remove-Item
Giải trình
- Đầu tiên chúng ta nhận được các đối tượng FileInfo và DirectoryInfo trong Path C: Backups.
- Các đối tượng FileInfo và DirectoryInfo đều chứa một thuộc tính CreationTime, vì vậy chúng ta có thể lọc bộ sưu tập bằng cách sử dụng nó.
- Toán tử –lt (nhỏ hơn) được sử dụng để so sánh thuộc tính CreationTime của các đối tượng với Get-Date (ngày hiện tại) trừ đi 5 ngày.
- Điều này sau đó lá chúng tôi với một bộ sưu tập các đối tượng đã được tạo ra cách đây hơn 5 ngày, chúng tôi chuyển đến mục Remove-Item.
Mẹo chuyên nghiệp
Để xem những gì sẽ bị xóa, bạn có thể sử dụng tham số –WhatIf:
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item –WhatIf
Dấu nhắc lệnh
Mặc dù chúng tôi khuyên bạn nên sử dụng một trong các phương pháp PowerShell, mà không cần phải nhập vào bất kỳ chi tiết nào có thể bạn cũng có thể làm điều đó từ dấu nhắc lệnh.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c del @path'
Mẹo chuyên nghiệp
Để xem những tệp nào sẽ bị xóa, bạn có thể sử dụng echo.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c echo @file'