Otro uso de call

Iniciado por carlitos.dll, 10 Julio 2008, 02:23 AM

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

carlitos.dll

Publico otro uso de call, que estoy aprendiendo

Esto es lo que llevo:



@echo off


:: Lo que sería:
:: set word=%word:%letra1%=%letra3%%
::
:: Ejemplo:
::
::     set word=%word:%letra1%=%letra3%%
::
::                    %word:%letra1%=%letra3%%
::call set  word =  [%] %word:%letra1%=%letra3%% [%]
:: se añade un % al principio y otro al final %
::
:: Finalmente queda:
::
::call set word=%%word:%letra1%=%letra3%%%


set letra1=ra
set letra2=ma
set letra3=ca
set letra4=sa

set word=rama


echo %word%
::muestra rama

call set word=%%word:%letra1%=%letra3%%%
call set word=%%word:%letra2%=%letra4%%%

echo %word%
::muestra casa

pause

set inicio=1
set fin=1

echo %word%

call echo %%word:~%inicio%,%fin%%%
::muestra a

echo %word%
::muestra casa

set inicio=2
set fin=3


call set word=%%word:~%inicio%,%fin%%%
echo %word%
::muestra sa

pause


najmuddin

Saludos Carlitos.

Por qué funciona así y no sin el Call... ¿Podrías extender un poco más la información sobre este uso?

Muchas Gracias. Disculpa si lo que te pido es un poco absurdo, es sólo que me gustaría entender correctamente...
-DARAKknight-


carlitos.dll

No sé porque funciona así, pero sé que funciona :D
Estoy aprendiendo.

$hyDow

la conocia, pero no muy a fondo

carlitos.dll

#4
Por fin lo entendí, gracias a una muy buena explicación que me dio -[black_hack]- y también recordando las palabras de sirdarkcat, de que doble % (%%) inserta un simbolo % que no es interpretado, es como si quieres añadir un carácter especial como ^ (añades ^^)

set letra1=ra
set letra2=ca

set word=rama

call set word=%%word:%letra1%=%letra2%%%

::Desarrollo (con espacios para que se vea mas claro)
::
::set word=%% word: %letra1% = %letra2% %%
::aqui se interpreta el doble %% y deja uno solo
::set word=% word: %letra1% = %letra2% %
::set word=% word: ra = ca %
::set word=%word:ra=ca%
::set word=cama

Al final, el call es para ganar una interpretación más.

De hecho esta página dice lo siguiente: Each CALL does one substitution of the variables. (You can also do CALL CALL... for multiple substitutions) http://www.ss64.com/nt/call.html

Por fin lo entendí, y aprendí otras cosas más.  ;D



najmuddin

#5
Cita de: carlitos.dll en 11 Julio 2008, 04:33 AM

Por fin lo entendí, y aprendí otras cosas más.  ;D


Bueno, no estaía de mal que nos enseñaras esas "Cosas más"...  ;D

Saludos y Gracias...

PD: Lo acabo de leer por segunda vez y lo comprendí... Espero paciente lo otro que aprendiste...  :P
-DARAKknight-


carlitos.dll

Cita de: najmuddin en 11 Julio 2008, 05:54 AM
Cita de: carlitos.dll en 11 Julio 2008, 04:33 AM

Por fin lo entendí, y aprendí otras cosas más.  ;D


Bueno, no estaía de mal que nos enseñaras esas "Cosas más"...  ;D

Saludos y Gracias...

PD: Lo acabo de leer por segunda vez y lo comprendí... Espero paciente lo otro que aprendiste...  :P

Eso es un poco ambicioso, se aprende preguntando/leyendo cosas específicas, nadie te enseñará "todo".

carlitos.dll

#7
Otro ejemplo.


@echo off

set letra1=cia
set letra2=a
set letra3=o

call set word=%%letra1:%letra2%=%letra3%%%
echo %word%

pause
exit



najmuddin

Cita de: carlitos.dll en 11 Julio 2008, 06:14 AM

Eso es un poco ambicioso, se aprende preguntando/leyendo cosas específicas, nadie te enseñará "todo".


Sí, eso lo sé, esa es la razón por la que puse las caritas (cocineros o lo que sea), pero parece que casi nunca soy claro con lo que digo, jeje...

Saludos Carlitos, te vuelvo a dar las gracias por el hilo, es realmente muy interesante...
-DARAKknight-