Eliminar archivos de más de X días en PowerShell
Eliminar archivos de más de X días en PowerShell
Utilice el cmdlet Remove-Item con el cmdlet Get-ChildItem y el cmdlet Where-Object para eliminar archivos con más de X días.
Utilice Get-ChildItem con Where-Object:
$path = "E:\Test"
$numberOfDays = 2
Get-ChildItem $path |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$numberOfDays)} |
Remove-ItemEl script anterior recuperó todos los elementos de la ruta dada, los filtró según la propiedad especificada y mantuvo solo aquellos archivos/carpetas que tenían menos de la cantidad de días especificada. Luego, finalmente, se eliminaron todos los elementos filtrados. Comprendamos el script anterior en detalle a continuación.
Primero, creamos e inicializamos una variable llamada $path para mantener la ubicación donde se encuentran nuestros archivos y carpetas. Luego, creamos otra variable, $numberOfDays, que contenía el número de días, como se desprende del nombre de la variable.
A continuación, utilizamos Get-ChildItem para recuperar todos los elementos y elementos secundarios del $path dado. Si algún elemento es un contenedor, este cmdlet obtendrá todos los elementos dentro de ese contenedor; Nos referimos a estos elementos como elementos secundarios. Tenga en cuenta que podemos usar el parámetro -Recurse para acceder a elementos en cada contenedor secundario y el parámetro -Depth para limitar el número de niveles a recurrir. Puede leer sobre ambos parámetros aquí.
Después de eso, conectamos el cmdlet Get-ChildItem con el cmdlet Where-Object para filtrar los elementos recuperados según la propiedad LastWriteTime; esta propiedad representa la última hora de escritura para cada elemento en la canalización. El $_ es una variable automática que indica el elemento actual de la canalización. Luego, usamos Get-Date para obtener la fecha y hora actuales y .AddDays(-$numberOfDays) para restar -$numberOfDays de ella. .
Ahora, podrías estar pensando que cómo un .AddDays() puede restar, debería sumar. Dado que hemos negado el $numberOfDays mientras lo pasábamos al método .AddDays(), agregar $numberOfDays a la fecha actual equivale a restar -$numberOfDays desde la fecha actual.
Usamos un operador de comparación menor que (representado con lt) para evaluar si la propiedad .LastWriteTime es menor que la fecha actual menos $numberOfDays. Si esto da como resultado true, el elemento actual se agregará a la salida del cmdlet Where-Object; de lo contrario, se excluirá el artículo actual. Finalmente, utilizamos Remove-Item para eliminar todos los elementos recibidos del cmdlet Where-Object.
Eliminar archivos de más de X días en el directorio y subdirectorios de PowerShell
Utilice el cmdlet Remove-Item con los parámetros -Include y -Recurse para eliminar archivos con más de X días.
Utilice el cmdlet Remove-Item con -Include y -Recurse:
$path = "E:\Test"
$numberOfDays = 27
Remove-Item $path\* -Recurse -Include *.* -Force |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$numberOfDays) }Este script eliminará todos los archivos del directorio y subdirectorios dados que tengan más de 27 días.
Ya hemos aprendido sobre $path, $numberOfDays, Remove-Item, Where-Object, LastWriteTime, Get-Date y .AddDays(). Aquí, aprenderemos sobre las opciones y parámetros seguidos de Remove-Item y precedidos por la canalización. En palabras simples, hablaremos de la expresión Remove-Item $path\* -Recurse -Include *.* -Force.
El Remove-Item eliminó todos los elementos del $path especificado; tener \* después de $path significa que todos los archivos en $path deben eliminarse. A continuación, utilizamos el parámetro -Recurse para eliminar archivos de los subdirectorios, mientras que -Include *.* incluía todos los archivos independientemente de su extensión. Finalmente, -Force también se usó para eliminar archivos de solo lectura.
Se trata de cómo eliminar archivos de más de X días en PowerShell.
