Cómo eliminar archivos anteriores a X días en Windows
Ya le hemos mostrado cuán flexible puede ser el shell de Linux, pero eso no quiere decir que Windows esté más atrasado. Aquí hay dos técnicas que puede usar dependiendo de su preferencia de shell, cmd o PowerShell.
PowerShell 3
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Remover el artículo
PowerShell 2
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object $ _. CreationTime -lt (Get-Date) .AddDays (-5) | Remover el artículo
Explicación
- Primero obtenemos los objetos FileInfo y DirectoryInfo en la ruta C: \ Backups.
- Los objetos FileInfo y DirectoryInfo contienen una propiedad CreationTime, por lo que podemos filtrar la colección usando esa.
- El operador -lt (menor que) se usa para comparar la propiedad CreationTime de los objetos con la fecha de obtención (la fecha actual), restar 5 días.
- Esto nos deja con una colección de objetos que se crearon hace más de 5 días, que pasamos a Eliminar elemento..
Pro Consejo
Para ver qué se eliminará, puede usar el parámetro -WhatIf:
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Quitar artículo
Símbolo del sistema
Si bien le recomendamos que use uno de los métodos de PowerShell, sin entrar en ninguno de los detalles importantes, también puede hacerlo desde el símbolo del sistema..
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c del @path"
Pro Consejo
Para ver qué archivos se van a eliminar, puede usar echo.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c echo @file"