Ayuda [BATCH]

Iniciado por najmuddin, 16 Junio 2008, 23:20 PM

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

najmuddin

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):

casa$perro$esomismo$vida$codigo$bla$etc$

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

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:

%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í:

%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


-DARAKknight-


sirdarckcat

#1
Código (bash) [Seleccionar]

@echo off
set abc=hola
set yoz=abc
set res=set res=%%%yoz%%%
%res%
echo %res%


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

deberia funcionar

carlitos.dll


@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%



sirdarckcat

Me es imposible probar el código,. pero deberia funcionar..
@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

najmuddin

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


sirdarckcat

Porque %% regresa un caracter "%"

najmuddin

#6
perdon... Estuve intentando hacer otro, pero por qué no funciona de esta manera?:

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


sirdarckcat