Modificacion variables BATCH

Iniciado por victme, 6 Septiembre 2018, 08:22 AM

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

victme

No encuentro la manera de remplazar el "=" dentro de una variable
otra cuestion es como le hago  para quedarme solo con un cacho de una variable
como AA="texto, 14 texto j=0.25j=025j, texto" y solo quedarme con "j=0.25" ayudaa

Eleкtro

#1
Cita de: victme en  6 Septiembre 2018, 08:22 AMNo encuentro la manera de remplazar el "=" dentro de una variable

Así sería un reemplazamiento de string normal y corriente en Batch:

Código (dos) [Seleccionar]
Set "var=Hello World"
Set "var=%var:Hello=Bye%"

Echo:"%var%"


Aquí tienes otros ejemplos:

Sin embargo, Batch es un "lenguaje de programación" muy limitado y tedioso, directamente inutil para muchas necesidades programáticas de la vida real, hasta el punto en que para llevar a cabo un simple reemplazamiento del símbolo reservado de igual (=) en una variable, necesitarás recurrir a engorrosos algoritmos basados en la iteración por tokens o caracter por caracter de dicha variable, como los que puedes encontrar a constinuación en este enlace:


Consejo: no sigas perdiendo tu tiempo y esfuerzos en una herramienta obsoleta y engorrosa como es Batch, y utiliza cualquier otro lenguaje en su lugar. Tienes a tu disposición lenguajes como Visual Basic Script, javascript (para aplicaciones) y Powershell nativamente soportados en Windows. PowerShell es de lo mejor que puedes utilizar.




Cita de: victme en  6 Septiembre 2018, 08:22 AM
como le hago  para quedarme solo con un cacho de una variable

Aquí tienes ejemplos de substrings:





Cita de: victme en  6 Septiembre 2018, 08:22 AM
como AA="texto, 14 texto j=0.25j=025j, texto"

Para empezar, estás aplicando malos hábitos de programación Batch en esa declaración de variable.

El uso correcto de las comillas dobles para encerrar el valor, es así:
Set "var=value"

No así:
Set var="value"

...lo que estás haciendo así es incluir las comillas dobles como parte del valor/string. Dicho de ootra forma, el equivalente a esta declaración:

Set "var="value""




Cita de: victme en  6 Septiembre 2018, 08:22 AMy solo quedarme con "j=0.25"

Puedes aplicar dos metodologías distintas según tus necesidades, si conoces la posición exacta del caracter de inicio y final entonces puedes aplicar un substring a esa variable, por ejemplo:

Código (dos) [Seleccionar]
Set "var=text1,j=0.25,text2"
set "j=%var:~6,6%"

Echo:"%j%"


Si por lo contrario desconoces las posiciones de caracteres entonces no te queda más remedio que delimitar la variable (tokenizarla) y recorrer dicha variable con un búcle por tokens:

Código (dos) [Seleccionar]
Set "var=text1,j=0.25,text2"
FOR /F "Tokens=2 Delims=," %%# IN ("%VAR%") DO (Set "j=%%~#")
Echo:"%j%"


...eso vendría a ser lo más parecido que el inutil Batch permite llevar a cabo para reproducir una especie de operación de string split (partir una cadena de texto en una determinada cantidad de partes como resultado de un caracter delimitador).

Saludos.