Hoe verwijder je bestanden ouder dan X Days op Windows
We hebben je al laten zien hoe flexibel de Linux-shell kan zijn, maar dat wil niet zeggen dat Windows verder achterblijft. Hier zijn twee technieken die u kunt gebruiken, afhankelijk van uw shellvoorkeur, cmd of PowerShell.
PowerShell 3
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Verwijder voorwerp
PowerShell 2
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object $ _. CreationTime -lt (Get-Date) .AddDays (-5) | Verwijder voorwerp
Uitleg
- Eerst krijgen we FileInfo en DirectoryInfo objecten in het pad C: \ Backups.
- Objecten van FileInfo en DirectoryInfo bevatten beide een CreationTime-eigenschap, zodat we de verzameling met die eigenschap kunnen filteren.
- De operator -lt (minder dan) wordt vervolgens gebruikt om de CreationTime-eigenschap van de objecten te vergelijken met Get-Date (de huidige datum) 5 dagen aftrekken.
- Dit laat ons achter met een verzameling objecten die meer dan 5 dagen geleden zijn gemaakt en die we doorgeven aan Remove-Item.
Pro Tip
Om te zien wat er zal worden verwijderd, kunt u de parameter -WhatIf gebruiken:
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Remove-Item -WhatIf
Opdrachtprompt
Hoewel we u aanraden om een van de PowerShell-methoden te gebruiken, zonder dat u in een van de korrelige details raakt, kunt u dit ook doen via de opdrachtprompt..
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 @bestand"