Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: najmuddin en 16 Junio 2008, 23:20 pm



Título: Ayuda [BATCH]
Publicado por: najmuddin en 16 Junio 2008, 23:20 pm
Saludos.

Disculpen, tengo el problema siguiente:

Quiero reemplazar una parte de una variable por cualquier cosa. El inconveniente es que lo que busco es que la parte que se desea reemplazar se escoja por el usuario, por ejemplo:

TENGO EL SIGUIENTE TEXTO (guardado en un txt):

Código:
casa$perro$esomismo$vida$codigo$bla$etc$

Quiero que la variable reemplace alguno de esos valores, entonces utilizo un For de la manera siguiente:

Código:
for /f "tokens=1-10 delims=$" %%a in (cosa.txt) do (set cosa=%%a%%b%%c%%d%%e)

Ahora tengo la variable "cosa" con algunos de los valores. Lo que busco es poder reemplazar alguno, lo que puedo lograr sin problemas de esta forma:

Código:
%cosa:perro=$%

Lo que reemplaza "perro" por el signo $...

EL PROBLEMA:

Quiero que así como puede ser "perro" pueda ser cualquiera, por lo que busco poner una variable con /p para que escojer el valor que sea...

¿Cómo logro encrustar una variable adentro de la otra?
para que quede así:

Código:
%cosa:%variable%=$%

Muchas Gracias. No sé si fui totalmente claro al citar esto... Me he roto la cabeza más de una Semana en mi colegio y en el trabajo pensando en una solución, para llegar a mi casa y encontrar que no funciona... Espero que puedan Ayudarme.

Najmuddin




Título: Re: Ayuda [BATCH]
Publicado por: sirdarckcat en 29 Junio 2008, 10:23 am
Código
  1. @echo off
  2. set abc=hola
  3. set yoz=abc
  4. set res=set res=%%%yoz%%%
  5. %res%
  6. echo %res%
  7.  

también puedes hacer
set res=set res=%%cosa:%yoz%=$%%

deberia funcionar


Título: Re: Ayuda [BATCH]
Publicado por: carlitos.dll en 29 Junio 2008, 12:04 pm
Código:
@echo off
for /f "tokens=* delims=$" %%t in (file.txt) do set s=%%t & call :metodo
pause
exit
:metodo
set text=perro
set replace=gato

::set s=%s:%text%=%replace%%
::aqui no logre colocar variables, esto no funciona.

echo %s%
::esto si funciona, aunque no es la idea.
set s=%s:perro=gato%
echo %s%



Título: Re: Ayuda [BATCH]
Publicado por: sirdarckcat en 29 Junio 2008, 12:48 pm
Me es imposible probar el código,. pero deberia funcionar..
Código:
@echo off
for /f "tokens=* delims=$" %%t in (file.txt) do set s=%%t & call :metodo
pause
exit
:metodo
set text=perro
set replace=gato
call:eval %%s:%text%=%replace%%%
echo %s%
goto:EOF
:eval
set s=%1


Título: Re: Ayuda [BATCH]
Publicado por: najmuddin en 30 Junio 2008, 01:55 am
Muchas Gracias por los Códigos...

Sidarckcat, sí funciona el que dijiste, aunque aún ignoro una parte... nunca he utilizado el caracter & porque no entendí bien su uso... Lo he visto doble (&&). Podría uno de ustedes explicarme dónde puede usuarse y para qué...

PD: Por ahí derecho una descripción breve del :EOF, he leído el tutorial de BATCH avanzado, pero aún así no estoy del todo seguro...

Disculpen... Gracias de nuevo

 :rolleyes:

----- Acabo de descubrir que era lo que no me dejaba hacer todo bien desde el principio...

inicialmente por esto:

1 - %s:%text%=%replace%% ---> Sólo usaba un % que hacía que apareciera "Text" (No sé por qué)

2 - %%s:%text%=%replace%% ---> Cuando usaba %% al inicio, sólo cerraba uno al final...


>>> ¿Por qué al usar %% sentencia %%  funciona y con % sentencia % no?

Gracias


Título: Re: Ayuda [BATCH]
Publicado por: sirdarckcat en 30 Junio 2008, 02:54 am
Porque %% regresa un caracter "%"


Título: Re: Ayuda [BATCH]
Publicado por: najmuddin en 1 Julio 2008, 00:27 am
perdon... Estuve intentando hacer otro, pero por qué no funciona de esta manera?:

Código:
@echo off
set var1=texto cualquiera
echo.
echo.
echo %var1%
echo.
set /p var2= parte a reemplazar:
set var2=%%var1:%var2%=$%%
echo %var2%
pause>nul

¿Tiene que ser únicamente llamando a una función?

Disculpen.


Título: Re: Ayuda [BATCH]
Publicado por: sirdarckcat en 1 Julio 2008, 13:54 pm
si