elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?  (Leído 13,914 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
(Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« en: 20 Marzo 2012, 12:24 pm »

Hola

Lo que necesito es eliminar el caracter "%".

Lo he intentado de todas las maneras que se me ha ocurrido... Escapando, Expandiendo, Usando 2 porcentages, 3, 4.. y volviendo a escapar xD...

Creo que no es posible reemplazar el caracter "%" ni el "~"

¿Alguien sabe si se puede hacer?

Código
  1. @Echo OFF
  2. Set "String=%%Special:~2,1%%"
  3. Echo Antes  :  %String%
  4. Set "String=%String:%=%"
  5. Echo Despues:  %String%

Este es el resultado que busco:



Gracias...


« Última modificación: 20 Marzo 2012, 12:39 pm por EleKtro H@cker » En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #1 en: 20 Marzo 2012, 12:54 pm »

Si sabes cuanto mide (en caracteres la variable) y si no alguna manera habra (se me ocurre con for) puedes probar esto:
Código:
@Echo OFF
set enabledelayedexpansion
Set "String=%%Special:~2,1%%"
Echo Antes  :  %String%
Echo Despues: %string:~1,12%
Pause >nul


« Última modificación: 20 Marzo 2012, 13:15 pm por -- KiLiaN -- » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #2 en: 20 Marzo 2012, 13:03 pm »

Gracias -- KiLiaN -- Pero el método de averiguar la longitud de la variable no me serviría, más que nada porque la variable original tiene ste formato:

Código:
%Special:~2,1%%Alpha:~4,1%%Alpha:~2,1%%Alpha:~7,1%%Alpha:~14,1% %Alpha:~14,1%%Alpha:~5,1%%Alpha:~5,1%

De nada me serviría lo de la longitud jeje, Pero te lo agradezco mucho.

En lo que se refiere a documentación, No he encontrado al respecto sobre el reemplazamiento de dicho caracter.

Es obvio que con 2 caracteres incompatibles debido a que el "%" batch lo reconoce como el final de esa cadena (Variable=%Variable:%=%) (Lo que está en rojono se llega a procesar) , Y si uso el símbolo para escapar "^" batch lo reconocer como un caracter más al reemplazar.
También he pensado en escapar el scape: "^^%" Pero nada, No sirve.

Creo que mi idea de compartir con vosotros un ofuscador tendrá que esperar jejeje, O pensaré en hacerlo en Ruby xD

Un saludo!


EDITO: Ya está, Juraría que ya habia probado con 2 porcentajes pero parece que no jeje, solucionado!

Código:
setlocal enabledelayedexpansion
Set "String=!String:%%=!"
« Última modificación: 20 Marzo 2012, 13:37 pm por EleKtro H@cker » En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #3 en: 20 Marzo 2012, 13:58 pm »

Y como has llegado a esa conclusion? yo tambien llevaba un rato dandole vueltas xD
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #4 en: 20 Marzo 2012, 15:26 pm »

Cual, ¿La de los 2 porcentajes?

Es el único caracter que hay que repetir obligatoriamente

Sencillamente porque es el identificador de inicio de variable, Si escribes un porcentaje, Batch espera que le siga el nombre de una variable, y otro símbolo % para cerrar la variable:

Ejemplo:
Código:
%variable%
(Ya lo sabes xD)

Además de eso, Están los subniveles donde hay que expandir los porcentajes, por ejemplo para mostrar el contenido de %Variable% habria que hacer esto:
Código
  1. Echo %%%%variable%%%%

Pero bueno, Eso ya es otro tema aparte xD que he tocado muy poco como para dar una buena explicación


Si pruebas esto verás que solo se muestra el segundo comando de Echo:

Código
  1. @echo off
  2. Echo "%"
  3. Echo "%%"

Un saludo
« Última modificación: 20 Marzo 2012, 15:29 pm por EleKtro H@cker » En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #5 en: 20 Marzo 2012, 15:30 pm »

Yo me referia a esto:
Código:
Set "String=!String:%%=!"
lo del doble %% ya lo sabia y ya se que me has explicado la expansion de variables (en otro post xD) y creo que lo entendi, pero no entiendo como has llegado a esa conclusion, entiendes? xD
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #6 en: 20 Marzo 2012, 15:38 pm »

Yo me referia a esto:
Código:
Set "String=!String:%%=!"
lo del doble %% ya lo sabia

pero no entiendo como has llegado a esa conclusion, entiendes? xD

Creo que te entiendo  :P
Pues supongo que por lógica, Si usaba 4 simbolos (%String:%%=%) No iba a funcionar, Así que... tenía que expandir la variable String para poder colocar el maldito % y que lo reconociera...

Lo cierto es que probé muchas más cosas antes de eso xD ya lo dije en el primer comentario

Si te surge cualquier duda comenta

Salu2
En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #7 en: 20 Marzo 2012, 15:50 pm »

No entendia la logica, a ver si así si:
Código:
Set "String=!String:%%=!"
Le cambias el valor a la variable String por si misma pero sin los % y utilizas la expansion para no tener que utilizar % en la variable porque sino no lo ejecuta entero. Con la expansion haces que cuando se ejecute el comando remplaza los % sobre el valor de String y no sobre la cadena "%String:%%=". Es esa la logica? xD Gracias por tu tiempo ;)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: (Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
« Respuesta #8 en: 20 Marzo 2012, 16:16 pm »

Si, Esa es la lógica :P Lo has explicado muy bien
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines