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
Explicação
- Primeiramente, obtemos os objetos FileInfo e DirectoryInfo no caminho C: Backups.
- Os objetos FileInfo e DirectoryInfo contêm uma propriedade CreationTime, portanto, podemos filtrar a coleção usando isso.
- O operador –lt (menor que) é usado para comparar a propriedade CreationTime dos objetos com Get-Date (a data atual) subtrair 5 dias.
- Isso nos deixa com uma coleção de objetos que foram criados há mais de 5 dias, os quais passamos para Remove-Item.
Dica Pro
Para ver o que será removido, você pode usar o parâmetro –WhatIf:
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item –WhatIf
Prompt de comando
Embora seja recomendável usar um dos métodos do PowerShell, sem entrar em nenhum dos detalhes, você também pode fazê-lo no prompt de comando.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c del @path'
Dica Pro
Para ver quais arquivos serão excluídos, você pode usar o eco.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c echo @file'