Página principal » cómo » Automatizar el proceso de eliminación de archivos de registro antiguos

    Automatizar el proceso de eliminación de archivos de registro antiguos

    Muchos de los servicios y programas que hay por ahí producen archivos de registro como un registro de auditoría para todo lo que están haciendo, sin embargo, pocos tienen una función que elimine estos archivos a medida que superan su utilidad. Como resultado, estos archivos de registro se encuentran en su sistema consumiendo espacio (a veces más de lo que usted sabe) y abarrotan los directorios para los momentos en que necesita acceder a ellos.

    Así que si no necesitas estos archivos, ¿por qué guardarlos? Le mostraremos cómo eliminar fácilmente estos archivos de registro antiguos para mantener su sistema limpio y ordenado..

    Por supuesto, si bien lo que cubrimos a continuación son inmediatamente útiles para administrar los archivos de registro, también puede aplicar las mismas técnicas a cualquier otro tipo de archivo "caducado" (como copias de seguridad).

    Eliminar archivos según la fecha de la última modificación

    Si desea borrar sus archivos de registro existentes basándose únicamente en la última fecha de modificación del archivo, todo lo que tiene que hacer es usar el comando FORFILES. Por ejemplo:

    FORFILES / P “C: LogFiles” / S / D -7 / C “CMD / C DEL / F / Q @PATH”

    El comando anterior eliminaría todos los archivos de la carpeta "C: LogFiles" y todas las subcarpetas que no se hayan modificado en la última semana.

    El comando FORFILES es bastante flexible con el patrón de búsqueda y las funciones de fecha. Por ejemplo, en lugar de un número, puede ingresar una fecha como '-1/13/2010' para eliminar los archivos modificados por última vez antes de la fecha especificada.

    Para obtener todos los detalles sobre lo que FORFILES puede hacer, vea la ayuda en línea usando el siguiente comando desde el símbolo del sistema:

    FORFILES /?

    Eliminar archivos según un patrón de fecha en el nombre de archivo

    Muchas aplicaciones y servicios producen archivos de registro basados ​​en un patrón de fecha para tener un archivo de registro por día (es decir, Log100113.txt, Backup-2010-01-13.zip, etc.). Para estos tipos de archivos, es preferible eliminarlos en función de la fecha del archivo incorporado en el nombre del archivo en lugar de la fecha de la última modificación. Esto es útil para escenarios como mantener todos los archivos de registro durante los últimos 3 meses. Desafortunadamente, Windows no tiene un comando nativo con este tipo de lógica, pero con un script por lotes podemos manejar esta tarea fácilmente.

    Hay ejemplos incluidos en los comentarios de uso en el script, por lo que debería ser bastante fácil de averiguar.

    La secuencia de comandos

    @ECHO OFF ECHO Eliminar por fecha Patrón ECHO Escrito por: Jason Faulkner ECHO SysadminGeek.com ECHO. ECO. REM Eliminar / seleccionar archivos en función de una fecha que utiliza MM y / o DD para los patrones de nombres de archivos. REM REM Uso: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Especifica que el patrón que se utiliza se basa en meses. REM / D Especifica que el patrón que se utiliza se basa en días. REM NumberToKeep REM El número de meses (/ M) o días (/ D) a mantener, incluido el actual. REM Por ejemplo, al ingresar 1 solo se mantiene el mes / día actual y 6 se mantendría el menos actual 5. REM Ruta La ubicación de la raíz para buscar. Se buscarán los subdirectorios. REM PatternPrefix REM El patrón de búsqueda de archivos colocado antes del mes / día cuando se crea la cadena de búsqueda. REM PatternPostfix REM El patrón de búsqueda de archivos colocado después del mes / día cuando se construye la cadena de búsqueda. REM / L (opcional) Enumera todos los archivos que coinciden con el patrón, pero no los elimina. REM / DEL (opcional) Borra todos los archivos que coinciden con el patrón. REM REM Ejemplos: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Elimina todos los archivos de registro de IIS (Windows Server 2003) excepto los dos meses actuales y anteriores. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Elimina todos los archivos zip de la carpeta D: Backup excepto la semana actual. REM El patrón de nombre de archivo asumido anteriormente es "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Imprime una lista de todos los archivos en la unidad C que coinciden con el patrón: " * -MM- * "(donde MM se reemplaza por 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Imprime una lista de todos los patrones que serían procesados ​​por el script. SETLOCAL EnableExtensions EnableDelayedExpansion REM Supone que las configuraciones de fecha / hora de Windows están configuradas en el formato 'DayOfWeek M / D / YYYY'. REM Si su formato es diferente, deberá modificar las siguientes variables para que se alineen. Fichas de FOR / F "= 1,2,3,4 delimitantes = /" %% A IN ('DATE / T') DO (SET Mes = %% B SET Day = %% C SET Año = %% D) IF / I % 1 == / M (Mantener SET =% Mes% SET Max = 12) IF / I % 1 == / D (Mantener SET =% Día% SET Max = 31 REM Trabajo fuera de los días máximos del mes anterior. SET / A PrevMonth =% Month% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap years ... agregue más según sea necesario. IF / I% Año% EQU 2012 SET Max = 29 IF / I% Año% EQU 2016 SET Max = 29) IF / I! PrevMonth! EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET Max = 30 IF / I! PrevMonth! EQU 9 SET Max = 30 IF / I! PrevMonth! EQU 11 SET Max = 30) SET Current =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM Determine el rango que se eliminará. SET / A RemoveHighStart =% Current% + 1 IF / I% Keep% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1 CONFIGURAR RemoveHighEnd =% Max%) REM Procesar todo menos que el rango bajo. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Process %% Z% 3% 4% 5% 6 REM Procese todo mayor que el rango alto. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Process %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Fin: Proceso SET Tecla = 0% 1 SET Tecla =% Tecla: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" ECHO Target Pattern:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Objetivo% GOTO Fin: Fin

    Automatizando el proceso

    El comando FORFILES es nativo de Windows, sin embargo, el script DeleteByDatePattern se debe colocar en una carpeta definida en su variable Path (como su carpeta de Windows) para que pueda llamarse como si fuera un comando nativo. Una vez hecho esto, puede crear una tarea programada que sea un solo comando (si solo necesita eliminar de una sola ubicación) o un archivo por lotes (si necesita eliminar de varias ubicaciones) que se ejecuta diariamente, semanalmente, mensualmente o cuando.

    Una cosa más que puedes configurar y olvidar..

    Campo de golf

    Descargar la secuencia de comandos Delete By Date Pattern desde Sysadmin Geek