Automatizar borrado de ficheros viejos


  • 0

    Al maravilloso SQL 2005, que falla cuando le da la gana, le tengo programadas unas copias de seguridad automáticas, las cuales se hacen correctamente, pero también le tengo puesto que borre las copias con más de 5 días de antiguedad, pero no las borra, no me hace ni puto caso…

    Total, que necesito o bien un comando en MS-DOS que lo automatizaría en una tarea programada, o bien algún programa que sea capaz de borrar todos los archivos de una carpeta que tengan cierta antiguedad, necesito poder decirle que borre todos los archivos que tengan más de 5 dias.

    Alguna idea?

    Gracias :)



  • 1

    Microsoft publicó en el Technet una aplicación de línea de comando que se llama forfiles.exe que te permite generar una lista de ficheros de un directorio filtrando por varios criterios posibles (por ejemplo, por fecha) y luego puedes operar con esa lista de ficheros (por ejemplo, borrarlos).

    Tienes información sobre forfiles en http://technet.microsoft.com/es-es/library/cc753551(WS.10).aspx

    Si googleas forfiles.exe tienes muchos ejemplos para hacer lo que tú quieres como
    Rem: Use Forfiles to Delete Old Files
    o
    Borrado de ficheros por fecha de creación |



  • 2

    Muchas gracias lforos!!!

    Aunque la verdad es que ayer me harté de buscar y me hice un proceso por lotes que me mantiene las 5 últimas copias de seguridad y va borrando la quinta que tiene almacenada :)

    No lo hace por fechas, pero mantiene las últimas 5 copias, no es elegante, pero funciona de puta madre, jeje

    Lo pongo por aquí por si a alguien le puede interesar:

    –----------------------------------------------------
    REM Proceso creado por Tassadar para borrar automáticamente las copias de seguridad del SQL que sean viejas
    REM Mantiene siempre las últimas 5 copias + la del día actual (HOY)
    REM
    REM
    REM Uso:
    REM 1.--Meter en la carpeta PLANTILLA (X:\MSSQL\BACKUP\PLANTILLA) todas las carpetas (vacías) de todas
    REM las bases de datos
    REM 2.--Este proceso por lotes va en la carpeta X:\MSSQL\BACKUP
    REM 3.--Se debe configurar el SQL para hacer las copias en X:\MSSQL\BACKUP\HOY en lugar de X:\MSSQL\BACKUP
    REM 4.--No es necesario crear ninguna carpeta dentro de X:\MSSQL\BACKUP\ excepto la primera vez HOY y PLANTILLA
    REM 5.--Ejecutar éste proceso UNA VEZ cada día (automatizándolo)
    REM

    REM Primero hay que borrar la copia mas vieja
    rd DIA5 /s /q

    REM Renombrar para que quede reflejado que las copias son un dia mas viejo
    rename DIA4 DIA5
    rename DIA3 DIA4
    rename DIA2 DIA3
    rename DIA1 DIA2

    REM Las copias actuales pasan a ser las del dia1
    rename HOY DIA1

    REM Restauramos carpeta HOY con la escructuravacía según la plantilla
    MD HOY
    xcopy /e PLANTILLA HOY

    Un saludo





Has perdido la conexión. Reconectando a Hardlimit.