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?
@Echo OFF
Set "String=%%Special:~2,1%%"
Echo Antes : %String%
Set "String=%String:%=%"
Echo Despues: %String%
Pause >nul
Exit
Este es el resultado que busco:
(http://img853.imageshack.us/img853/5097/prtscrcaptureyw.jpg)
Gracias...
Si sabes cuanto mide (en caracteres la variable) y si no alguna manera habra (se me ocurre con for) puedes probar esto:
@Echo OFF
set enabledelayedexpansion
Set "String=%%Special:~2,1%%"
Echo Antes : %String%
Echo Despues: %string:~1,12%
Pause >nul
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:
%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!
setlocal enabledelayedexpansion
Set "String=!String:%%=!"
Y como has llegado a esa conclusion? yo tambien llevaba un rato dandole vueltas xD
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:
%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:
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:
@echo off
Echo "%"
Echo "%%"
pause
Un saludo
Yo me referia a esto: 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
Cita de: -- KiLiaN -- en 20 Marzo 2012, 15:30 PM
Yo me referia a esto: 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
No entendia la logica, a ver si así si:
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 ;)
Si, Esa es la lógica :P Lo has explicado muy bien