Categorías
Powershell Sin categoría

Borrar ficheros más antiguos que una fecha dada

Con powershell podemos realizar facilmente esta tarea. Hay veces que nos interesa borrar de un directorioo (y sus subdirectorios), los ficheros que hayan sido modificados hace mas de un mes (por ejemplo). Además veremos como ejecutar este script de manera programada.

Empezemos con el script de powerhshell que nos permitirá borrar los ficheros mas antiguos que diez dias. (este valor lo podeis cambiar con la variable Daysold

$Daysold = 10
$Folder = "c:\windows\temp"

#Borramos los ficheros que haya en la Variable Folder, que sean mas viejos que Daysold
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-$Daysold)} |
ForEach-Object {
   $_ | del -Force
   $_.FullName | Out-File C:\tmp\deletedlog.txt -Append
}

#Eliniar directorios vacios
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {$_.PsIsContainer -eq $True} |
? {$_.getfiles().count -eq 0} |
ForEach-Object {
    $_ | del -Force
    $_.FullName | Out-File C:\tmp\deletedlog.txt -Append
}
#Los nombres de los ficheros eliminados los guardamos en C:\tmp\deletedlog.txt por si queremos tracearlo.

Como podeis ver en el código, tenemos dos variables, Folder y Daysold, que hacen referencia a la carpeta donde queremos borrar todos los ficheros, cuya fecha de modificación es mayor de 10 dias que es el valor de Daysold.

Al ejecutar este script, el primer bloque eliminará todos los ficheros mas antiguos de 10 dias, y después la seguna parte del script eliminará los directorios que se hayan quedado vacios. Si queremos dejar los directorios vacios, solo tenemos que eliminar las lineas de la 13 a la 19, que se encargan del borrado de los mismos.

Por otra parte guardamos el nombre de los ficheros borradoes en el fichero C:\tmp\deletedlog.txt por si queremos tener un log del borrado realizado.

Si quereis programar el script, lo podeis hacer facilmente siguiendo este artículo. Como ejecutar un script de powershell de manera programada

Espero que os haya gustado el artículo. Dejad vuestros comentarios!!

1 respuesta a «Borrar ficheros más antiguos que una fecha dada»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *