valor variable bucle FOR [Batch]

Iniciado por Narcosala, 17 Octubre 2008, 19:35 PM

0 Miembros y 1 Visitante están viendo este tema.

Narcosala

Hola,

Estaba realizando un simple script cuando me he encontrado con la imposibilidad de tratar el valor de una variable dentro de un bucle FOR. Dicha variable solo coge su valor una vez ha abandonado el script.

¿Alguien me puede indicar como solucionarlo?

Aquí os pongo tanto el código como la salida del mismo:

Citar
@ECHO OFF
SET /A NUM=0
FOR /L %%A IN (1,1,5) DO (
SET /A NUM=NUM+%%A
ECHO Valor Num en bucle: %NUM%
)
ECHO Variable Num finalizado bucle: %NUM%

Salida:

Citar

C:\>Batch.bat
Valor Num en bucle: 0
Valor Num en bucle: 0
Valor Num en bucle: 0
Valor Num en bucle: 0
Valor Num en bucle: 0
Variable Num finalizado bucle: 15
C:\>


Gracias.

Darioxhcx

FOR /L %%x in ( 0,1,5 ) Do ( echo %%x )

te devuelve

0
1
2
3
4
5

saludos

Narcosala

Estoy deacuerdo con tu respuesta, pero si intento asignar el valor de %%x a otra variable, esta última no toma valor hasta que se abandona el bucle.

Baphonet

Hace poco me encontre con el mismo problema y  opte por solucionarlo mediante un call, creando una sección aparte para las operaciones dentro del bucle. Asi:
@ECHO OFF
SET /A NUM=0
FOR /L %%A IN (1,1,5) DO (call :cont %%A)

ECHO Variable Num finalizado bucle: %NUM%
pause
exit

:cont
SET /A NUM=NUM+%1
ECHO Valor Num en bucle: %NUM%
goto :eof


Un saludo, espero que te sirva.