Ms-Dos - Ayuda para borrar directorios!

 
Vista:

Ayuda para borrar directorios!

Publicado por Eukeny (9 intervenciones) el 24/08/2009 16:36:11
Hola..

Anteriormente expuse un caso de respaldos con Nombre, fecha y numeracion consecutiva en cada carpeta, tema que quedo resuelto, (Muchas Gracias Antoni....) ;D ...ahora debo modificar este *.bat, para que a partir del 3er respaldo me borre el primero y asi cada vez que se ejecute, dejandome siempre los dos ultimos...;D.. espero darme a entender..

El codigo que llevo va de la siguiente manera..
pero aun no me funciona..
espero puedan orientarme..
mientras tanto seguire trabajando..
Gracias!!

@ECHO OFF
@ECHO *** RESPALDANDO INFORMACION DEL EQUIPO ***

SET FOLDER=%date:~0,2%-%date:~3,2%-%date:~6,4%
SET BACKUPCMD=XCOPY /S /C /D /E /H /I /R /Y
SET i=0

:suma
set /a i=i+1
rem Aqui propongo la eliminacion d la carpeta antrerior despues de la tercera
rem pero no lo hace...XD..
IF i == 3
SET i=0
:BorrarAnt
set /a i=i+1
rd "C:RespSist_"%FOLDER%-%i%. goto BorrarAnt

IF EXIST "C:RespSist_"%FOLDER%-%i%. goto suma

MKDIR "C:RespSist_"%FOLDER%-%i%
MKDIR "C:RespSist_%FOLDER%-%i%Mis Documentos"
MKDIR "C:RespSist_%FOLDER%-%i%Escritorio"
%BACKUPCMD% "C:Documents and settingsUsuario1Mis Documentos". "C:RespSist_%FOLDER%-%i%Mis Documentos"
%BACKUPCMD% "C:Documents and settingsUsuario1Escritorio". "C:RespSist_%FOLDER%-%i%Escritorio"
goto salir
:salir

***************************** tambien intenté esto:
:BorraAnterior
SET i=0
set /a i=i+1
rd "C:RespSist_"%FOLDER%-%i%
IF EXIST "C:RespSist_"%FOLDER%-%3%.goto BorraAnterior
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:Ayuda para borrar directorios!

Publicado por amparitohijo (94 intervenciones) el 24/08/2009 17:16:25
Buenas...

Fíjate que en una de las líneas pones:

If i == 3

La letra "i" nunca va a ser igual a 3. Quizá si lo pones entre símbolos de porcentaje te funcione. Te rehago el código a continuación, evitando en la medida de lo posible los fallos por variables.

Salu2

@ECHO OFF
@ECHO *** RESPALDANDO INFORMACION DEL EQUIPO ***

SET FOLDER=%date:~0,2%-%date:~3,2%-%date:~6,4%
SET BACKUPCMD=XCOPY /S /C /D /E /H /I /R /Y
SET i=0

:suma
set /a i=%i%+1
rem Aqui propongo la eliminacion d la carpeta antrerior despues de la tercera
rem pero no lo hace...XD..
IF %i% == 3
SET i=0
:BorrarAnt
set /a i=%i%+1
rd "C:RespSist_"%FOLDER%-%i%. goto BorrarAnt

IF EXIST "C:RespSist_"%FOLDER%-%i%. goto suma

MKDIR "C:RespSist_"%FOLDER%-%i%
MKDIR "C:RespSist_%FOLDER%-%i%Mis Documentos"
MKDIR "C:RespSist_%FOLDER%-%i%Escritorio"
%BACKUPCMD% "C:Documents and settingsUsuario1Mis Documentos". "C:RespSist_%FOLDER%-%i%Mis Documentos"
%BACKUPCMD% "C:Documents and settingsUsuario1Escritorio". "C:RespSist_%FOLDER%-%i%Escritorio"
goto salir
:salir
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:Ayuda para borrar directorios!

Publicado por Eukeny (9 intervenciones) el 24/08/2009 17:40:39
Hola.. Gracias por tu pronta respuesta

He probado tu recomendacion a cerca de la variable.. pero.. no me funcionó....

Hice un Codigo que me hace respaldos consecutivos con la variable "i"..... y me ha funcionado bien..

Lo que ahora deseo es que despues del tercer respaldo me borre siempre el primero.. dejandome solo las 2 ultimas carpetas...
es decir:

1ra ejecucion
=> C: espaldo1

2da ejecucion
=> C: espaldo1
=> C: espaldo2
3ra ejecucion <----- A partir d este db borrar siempre el anterior dejando siempre los 2
ultimos
=> C: espaldo2
=> C: espaldo3
..
.
Etc.......

**************************** Este s mi codigo********************
@ECHO OFF
@ECHO *** RESPALDANDO INFORMACION DEL EQUIPO ***

SET FOLDER=%date:~0,2%-%date:~3,2%-%date:~6,4%
SET BACKUPCMD=XCOPY /S /C /D /E /H /I /R /Y
SET i=0

:suma
set /a i=i+1

IF EXIST "C:RespSist_"%FOLDER%-%i%. goto suma

MKDIR "C:RespSist_"%FOLDER%-%i%
MKDIR "C:RespSist_%FOLDER%-%i%Mis Documentos"
MKDIR "C:RespSist_%FOLDER%-%i%Escritorio"
%BACKUPCMD% "C:Documents and settingsUsuario1Mis Documentos". "C:RespSist_%FOLDER%-%i%Mis Documentos"
%BACKUPCMD% "C:Documents and settingsUsuario1Escritorio". "C:RespSist_%FOLDER%-%i%Escritorio"

goto salir

:salir
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:Ayuda para borrar directorios!

Publicado por Armando Nava  (194 intervenciones) el 25/08/2009 18:31:17
Saludos

Sobre lo que comenta amparitohjo ademas de los signos de porcentaje, puedes tratar con:

if %i% EQU 3

Bueno ahora a lo que quieres:

Vamos a crear una lista con los directorios, contamos los elementos, si el contador es igual a 3, entonces borramos la última carpeta (prueba el comando dir /A:D /O:-D )

contar.bat
--------------------------------------------------------------------
@echo off
set /a NUM=0

dir /A:D /O:-D /B > lista_respaldos.txt

for /F "delims=," %%i IN (lista_respaldos.txt) do (
echo %%i
call numera.bat
)

if %NUM% EQU 3 (
echo "Entonces borramos"
echo "La ultima carpeta"
call resta.bat
)
--------------------------------------------------------------------

numera.bat
--------------------------------------------------------------------
set /A NUM=NUM+1
echo %NUM%
--------------------------------------------------------------------

resta.bat
--------------------------------------------------------------------
set /A NUM=NUM-1
echo %NUM%
for /F "skip=%NUM% delims=," %%a IN (lista_respaldos.txt) do (
echo %%a con fecha %%~ta
)
--------------------------------------------------------------------

Si tienes más de tres carpetas respaldadas, entonces nunca se cumplirá la condición.

En resta. bat faltaria incluir el comando, ve la ayuda de RMDIR /?

RMDIR %%a
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