Problema con variable

Iniciado por kraszic, 1 Agosto 2008, 13:00 PM

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

kraszic

Buenas, tengo unas dudas con las variables...
Me gustaria saber si puede poner una variable dentro de otra variable.

Ahora pongo el codigo q tengo y lo explico mas o menos.


set ini=0
:bucle
set /a ini=%ini%+1
if %ini%==20 goto fin
set var%ini%=%ini%prueba
echo %var%ini%%
goto bucle
:fin
pause>nul


Esto es solo un ejemplo. Lo q quiero conseguir es definir variables mediante un bucle asi; var1, var2, var3, var4, var5

La otra duda es en la linia:
echo %var%ini%%
ya que no se como tengo q imprimir la variable generada arriba.
Es posible hacer tdo esto??

En fin, a ver si me e explicado bien

saludos

PD: No intenteis entender el codigo porq lo he puesto sin pensar, solo para exponer la duda q tenia.

^Tifa^

No se en que lenguaje harias eso, pero si, es posible asignar valor a variables distintos valores digo a la misma variable dentro de un bucle. Por ejemplo ;;

main(void)
{
int a, b, c;

for (a=0;a<4;a++) {
b = a;
c = a+1;
  fprintf(stdout, "%i %i\n", b, c);
}
return 0;
}


Eso es en C, use un for como bucle hasta el 4, como veras tengo 3 variables enteras, donde uso la primera como contador del bucle, y se la voy asignando tanto a la variable b, como a la variable c sumandole un 1. Cada vez que se imprima con el printf que vez dentro del bucle, saldra esto ::

bash-3.1$ ./a.out
0 1
1 2
2 3
3 4


Donde la primera file corresponde a b, y la segunda a c. Vez como van cambiando los valores de las variables dentro del bucle? no se si mas o menos esto es lo que andas buscando, pero asignar valor a variables dentro de un bucle es posible.

kraszic

Se me olvido especificar q mi duda era en batch.

Pero de todas formas no es eso lo q busco, mi intencion no es modificar el valor de la variable.
Mi intencion es declarar nuevas variables mediante el bucle, el problema q tengo es q hay q poner una variable dentro de otra variable y eso no se como se hace o si se puede hacer.

saludos

$hyDow

no te entendi, pero el code esta mal
echo %var%ini%%
seria:
echo %var%%ini%

kraszic

Cita de: $hyDow en  1 Agosto 2008, 20:26 PM
no te entendi, pero el code esta mal
echo %var%ini%%
seria:
echo %var%%ini%
noo, esa es mi duda exactamente..

Tengo un contador q aumenta (1, 2, 3, 4, 5...)
Ese contador lo guardo en la variable ini.

Y lo q quiero es definir las variables en el bule de esta forma:
var1
var2
var3

Por eso pongo, set var%ini%=loquesea
con ini le doy un numero a esa variable, de modo q si ini=1, el resultado seria:
set var1=loquesea

Entonces lo q yo quiero hacer es imprimir esa variable, por eso pongo:
echo %var%ini%%
Lo que quiero es imprimir la variable; var1 (ini es el numero, y todo junto es el nombre de la variable)

Espero q me entiendan..

Voy a poner otro ejemplo q se ve mas clara mi intencion.

set ini=0
set /p crip=Introduzca una palabra de 10 digitos:
:bucle
if %ini%==9 goto acab
set vacr=%crip:~%ini%,1%
call :loquesea
rem Ignorar el call
set /a ini=%ini%+1
goto bucle


En este code hay otro ejemplo de una variable dentrode otra variable en la linia:
set vacr=%crip:~%ini%,1%
En este codigo, lo q intento consegir, es sacar todas las letras de la palabra guardada en la variable crip, de modo q primero guarde la primera letra, despues guarde la segunda...

saludos

carlitos.dll

#5
You can use the :~ syntax and provide each of the parameters from other variables, for example if you have

%_donor%=2539850
%_digit%=4

To extract digit # 4 from _donor you might try

SET _substring=%_donor:~%_digit%,1%

Unfortunately this will not work because the :~ syntax expects a value not a variable.
To get around this use the CALL command like this:

SET _startchar=2
SET _length=1
SET _donor=884777
CALL SET _substring=%%_donor:~%_startchar%,%_length%%%
ECHO (%_substring%)

:: Credits:
:: Clay Calvert - alt.msdos.batch.nt
:: Ritchie Lawrence - alt.msdos.batch.nt

Fuente:http://www.ss64.com/ntsyntax/varsubstring.html


call set vacr=%%crip:~%ini%,1%%

lo mismo que quieres hacer, pero le añades un call antes del set y un % al principio y otro al final.

no solo con set:

call echo %%crip:~%ini%,1%%



kraszic

mil gracias, me has salvado xD
Eso es justo lo q necesitaba

saludos