Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: carlitos.dll en 10 Julio 2008, 02:23 am



Título: Otro uso de call
Publicado por: carlitos.dll en 10 Julio 2008, 02:23 am
Publico otro uso de call, que estoy aprendiendo

Esto es lo que llevo:

Código:

@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



Título: Re: Otro uso de call
Publicado por: najmuddin en 10 Julio 2008, 05:37 am
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...


Título: Re: Otro uso de call
Publicado por: carlitos.dll en 10 Julio 2008, 06:14 am
No sé porque funciona así, pero sé que funciona :D
Estoy aprendiendo.


Título: Re: Otro uso de call
Publicado por: $hyDow en 10 Julio 2008, 11:17 am
la conocia, pero no muy a fondo


Título: Re: Otro uso de call
Publicado por: carlitos.dll en 11 Julio 2008, 04:33 am
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)
Código:
http://www.ss64.com/nt/call.html

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




Título: Re: Otro uso de call
Publicado por: najmuddin en 11 Julio 2008, 05:54 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


Título: Re: Otro uso de call
Publicado por: carlitos.dll en 11 Julio 2008, 06:14 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".


Título: Re: Otro uso de call
Publicado por: carlitos.dll en 11 Julio 2008, 06:29 am
Otro ejemplo.

Código:
@echo off

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

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

pause
exit



Título: Re: Otro uso de call
Publicado por: najmuddin en 11 Julio 2008, 23:04 pm

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...