Ms-Dos - eliminar carpetas copia seguridad

 
Vista:

eliminar carpetas copia seguridad

Publicado por Carmen Terrero (1 intervención) el 03/01/2008 14:52:37
Hola, necesito vuestra ayuda. Cada día genero la copia de seguridad en una carpeta nombrada con la fecha del día(dd-mm-aaaa). Ahora borro estas carpetas manualmente (solo quiero mantener copia de los dos últimos dias). Habría alguna forma de hacer esto automáticamente con MS-DOS??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:eliminar carpetas copia seguridad

Publicado por Antoni Masana (295 intervenciones) el 04/01/2008 12:42:31
Aqui tienes un ejemplo. Necesitas un programa que se llama MAWK.EXE o AWK.EXE lo puedes descargar de:

http://openetwork.com/berk.html

El BAT borra el o los directorios mas antiguos, guardando los dos ultimos y crea el del dia si no existe.

Si se ejecuta dos veces el mismo dia no hay crea ningun problema.

Esto tiene una pega, para mi gusto, los directorios deberian nombrarse AAAA-MM-DD y no DD-MM-AAAA, es más facil para ordenar y no dependes de la fecha/hora de creación. el dir seria:

DIR /B /A:D /O:N 20??-??-?? >direc-2.txt

Como explicar como funciona es largo y no tengo ganas de escribir, si tienes elgun problema te lo explico.

Para la prueba necesitas estos dos ficheros:

BORRA.BAT
--------------------------------------------------------------------
@echo OFF

dir /B /AD /OD ??-??-20?? >direc-2.txt

mawk -f borra.awk direc-2.txt >borra-2.bat

call borra-2.bat
del borra-2.bat
del Direc-2.txt

set Any=%Date:~6%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%

if exist %Dia%-%Mes%-%Any% goto Fin
MKDIR %Dia%-%Mes%-%Any%
:Fin
--------------------------------------------------------------------

BORRA.AWK
--------------------------------------------------------------------
BEGIN { num=0; }
{ direc[++num]=$0 }
END { num-=2;
if (num>0) for(a=1;a<=num;a++) printf("RD %s /S /Q ", direc[a])
}
--------------------------------------------------------------------

Un saludo desde Barcelona, Espanya.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:eliminar carpetas copia seguridad

Publicado por Antoni Masana (295 intervenciones) el 04/01/2008 13:57:48
Hay un pequeño error.

Primero hay que crear el nuevo directorio y despues borrar

BORRA.BAT
--------------------------------------------------------------------
@echo OFF

SET Any=%Date:~6%
SET Mes=%Date:~3,2%
SET Dia=%Date:~0,2%

IF EXIST %Dia%-%Mes%-%Any% GOTO Fin
MKDIR %Dia%-%Mes%-%Any%

DIR /B /AD /OD ??-??-20?? >Direc-2.txt

MAWK -f BORRA.AWK Direc-2.txt >Borra-2.bat

CALL Borra-2.bat
DEL Borra-2.bat
DEL Direc-2.txt
:Fin
--------------------------------------------------------------------

BORRA.AWK
--------------------------------------------------------------------
BEGIN { num=0; }
{ direc[++num]=$0 }
END { num-=2;
if (num>0) for(a=1;a<=num;a++) printf("RD %s /S /Q ", direc[a])
}
--------------------------------------------------------------------

Si quieres conservar el directorio de hoy y el de ayer pon un 2 en la linea:

END { num-=2;

Si quieres conservar el directorio de hoy y los 2 ultimos días pon un 3 en la línea:

END { num-=3;

Ahora si que esta bien. O eso creo.

Un saludo desde Barcelona, Espanya.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar