We hebben je al laten zien hoe flexibel de Linux-shell kan zijn , maar dat wil niet zeggen dat Windows verder achterloopt. Hier zijn twee technieken die u kunt gebruiken, afhankelijk van uw shell-voorkeur, cmd of PowerShell.
PowerShell 3
Get-ChildItem –Pad "C: \ Backups" –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Verwijder voorwerp
PowerShell 2
Get-ChildItem –Pad "C: \ Backups" –Recurse | Waar-Object{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Verwijder voorwerp
Uitleg
- Ten eerste krijgen we FileInfo- en DirectoryInfo-objecten in het pad C: \ Backups.
- FileInfo- en DirectoryInfo-objecten bevatten beide een CreationTime-eigenschap, dus we kunnen de verzameling daarmee filteren.
- De –lt (kleiner dan) operator wordt vervolgens gebruikt om de eigenschap CreationTime van de objecten te vergelijken met Get-Date (de huidige datum) 5 dagen aftrekken.
- Dit geeft ons dan een verzameling objecten die meer dan 5 dagen geleden zijn gemaakt, die we doorgeven aan Remove-Item.
Pro-tip
Om te zien wat er verwijderd wordt, kunt u de –WhatIf parameter gebruiken:
Get-ChildItem –Pad "C: \ Backups" –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Item verwijderen - WhatIf
Opdrachtprompt
Hoewel we u aanraden om een van de PowerShell-methoden te gebruiken, kunt u dit ook vanaf de opdrachtprompt doen zonder in te gaan op de korrelige details.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c del @path"
Pro-tip
Om te zien welke bestanden worden verwijderd, kunt u echo gebruiken.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c echo @file"