Acompañamos en este artículo y descubre cómo puedes hacer el borrado de ficheros antiguos mediante scripts de PowerShell para que elimine los ficheros que tengan una fecha de creación más antigua que una fecha concreta.
En ocasiones, los administradores de sistemas podemos necesitar limpiar directorios, como por ejemplo temporales, ficheros de logs, unidades de intercambio, etc. Por desgracia, muchas veces no nos queda otra que revisar los datos de manera manual, para discriminar unos y otros.
En algunos casos, puede ser necesario que eliminemos los datos que tengan una antigüedad dada. Para estos casos, proponemos un script muy sencillo, que podemos lanzar de manera manual o mediante su incorporación a una tarea programada que se ejecute cada X tiempo.
Aquí vamos a darte la opción de elegir entre:
- Si quieres aprender las distintas opciones de este comando sigue leyendo normalmente.
- Si solo te interesa el comando o script en sí y te quieres ahorrar leer la explicación pincha aquí.
¿Cómo hacer el borrado de ficheros antiguos mediante scripts de PowerShell?
El comando que proponemos tiene la siguiente forma:
Get-ChildItem -Path «<RUTA_A_REVISAR>» -Recurse | Where-Object CreationTime -LT (Get-Date).AddDays(-<DIAS>) | Remove-Item
Donde:
- Get-ChildItem: Permite realizar el listado de los ficheros y directorios que hay en una ruta.
- -Path «<RUTA_A_REVISAR>»: Definimos la ruta a partir de donde se hace el listado.
- -Recurse: Hace recursivo desde la ruta definida en “Path”.
- |: Pasa la salida del primer comando hacia los comandos que hay a continuación.
- Where-Object CreationTime -LT (Get-Date).AddDays(-<DIAS>): Se hace una comprobación de los ficheros más antiguos de unos días descritos en <DIAS> de forma numérica.
- Remove-Item: Elimina los ficheros que cumplan con lo anterior.
Un ejemplo podría ser el siguiente en el que buscamos eliminar los ficheros con más de una semana de la ruta «C:\Drivers\lj368\»:
Get-ChildItem -Path «C:\Drivers\lj368\» -Recurse | Where-Object CreationTime -LT (Get-Date).AddDays(-7) | Remove-Item
En este caso hemos decidido hacer el borrado de los ficheros, pero quizá prefiramos mostrarlos por pantalla o escribirlos en un fichero para revisarlos después.
Borrado de ficheros antiguos mediante scripts de PowerShell:
Si solo quieres ejecutarlo, sin perder el tiempo en aprender para qué sirve cada comando, puedes ejecutar el siguiente comando:
Get-ChildItem -Path «<RUTA_A_REVISAR>» -Recurse | Where-Object CreationTime -LT (Get-Date).AddDays(-<DIAS>) | Remove-Item
Sustituyendo las siguientes cadenas por los valores indicados:
- <RUTA_A_REVISAR>: Deberás definir la ruta donde se hace el listado.
- <DIAS>: El número de días en forma numérica.
Y con eso solo tendríamos que lanzar el «oneline» y esperar mientras se ejecuta.
Conclusiones:
Como puedes ver, el borrado de ficheros antiguos mediante scripts de PowerShell nos permite borrar los ficheros que tengan más de un tiempo dado. Usando un par de comandos bien encadenados se puede realizar la tarea de manera semiautomática (pudiendo automatizarla mediante su programación).
La ejecución es sencilla y debería estar soportada por todos los sistemas Microsoft Windows actuales ya que son cmdlets básicos de PowerShell, pero si encontraras algún problema en su ejecución puedes contactar con nosotros para que intentemos echarte una mano.
Si quieres aprender otros scripts y trucos de PowerShell puedes echar un ojo a nuestro blog.
¡Gracias por leernos!