Ms-Dos - Error fichero BAT

 
Vista:

Error fichero BAT

Publicado por Montse (2 intervenciones) el 06/08/2009 14:08:45
Hola a todos,
Estoy haciendo un fichero por lotes para eliminar automáticamente unas carpetas
que hay en un directorio. Normalmente tengo unas 20.
la rutina es la siguiente y funciona bien. El problema está cuando intento limitar el número de eliminaciones, a 5 por ejemplo.
Aunque la variable %contador% incrementa su valor en uno correctamente por cada directorio que encuentra cuando la comparo (if %contador%==5....) entonces pasa que en esta línea %contador% siempre mantiene el valor inicial que es 1 y esto es lo que no entiendo.
si alguien puede echarme una mano se lo agradeceré.

@echo off
set contador=1
for /d %%f in (*.*) do (
@echo on
set contador
@echo off
if %contador%==5 (exit) else (rd %%f /s/q)
set /a contador=contador+1
)

Gracias por vuestra atención,

Montse
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:Error fichero BAT

Publicado por Antoni Masana (295 intervenciones) el 07/08/2009 07:26:13
Hola Motse

En teoria lo que has escrito esta bien pero no funciona. Digo en teoria porque el MSDOS tiene un BUG con respecto a las variables y los FOR, no se soportan las unas a las otras, no se pueden ni ver y tienen a los programadores locos.

Aqui te pongo una solución a la vieja usanza

@echo off
IF "%1" == "/B" goto Borra
SET Borrar=SI
SET contador=0
FOR /D %%f IN (*.*) DO CALL %0 /B %%f
GOTO Fin
:Borra
SET /A contador=contador+1
IF %Borrar% == SI ECHO %Contador% - RD %2 /S /Q
IF %contador%==5 SET Borrar=NO
:Fin

Tal cual esta escrito es para que veas como Funciona, debes cambiar la tercera linea empezando por abajo:

Esta:
IF %Borrar% == SI echo %Contador% - RD %2 /S /Q
por esta
IF %Borrar% == SI RD %2 /S /Q

Saludos
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:Error fichero BAT

Publicado por Montse (2 intervenciones) el 07/08/2009 08:20:00
Antoni,
Te agradesco muchisimo tu información. Tu ejemplo funciona perfectamente y
hace exactamente lo que necesito.
No tenia ni idea del Bug este que comentas.
He perdido muchisimo tiempo antes de pedir ayuda.

Gracias de nuevo o moltes gràcies.

Montse
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