Mini-manual sobre las variables de expansion

Iniciado por ne0x, 26 Mayo 2007, 22:02 PM

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

ne0x

Usando las variables de expansión


Sustitución de caracteres:


Para sustituir uno o varios caracteres de una variable por otro hacemos lo siguiente:

SET VariableResultado=%VariableOriginal:string1=string2%

La VariableResultado y la VariableOriginal pueden ser las mismas o no, lo meremos mejor mas adelante en los ejemplos.

string1 es el caracter o los caracteres que vamos a sustituir y logicamente string2 es el caracter o los caracteres por los que van a ser sustituidos. SI no ponemos el string2, strin1 se sustituira por nada, es decir, desaparacera.

Ejemplos:


SET VAR=hijo
SET RESULTADO=%VAR:o=a%
ECHO %RESULTADO%


Mostrara por pantalla "hija"

El siguiente codigo también haria lo mismo:


SET VAR=hijo
SET VAR=%VAR:o=a%
ECHO %VAR%


Ahora unos cuantos os preguntareis por que usamos el simbolo de porcentaje, "%", eso es por que le estas dando a una variable el valor de otra (modificado, claro esta)

Mirar este code:

SET /P PALABRA=
IF [%PALABRA%]==[] ECHO No has puesto nada !&pause&exit
SET PALABRA=%PALABRA:a=!%
SET PALABRA=%PALABRA:b="%
SET PALABRA=%PALABRA:c=·%
.......
.......
ECHO %PALABRA%


De esta forma tendríamos un cifrador en batch, y haciendolo al reves un descifrador.
Recordar que strin1 y strin2 pueden ser varios carácteres tambien.


SET VAR=hola
SET VAR=%VAR:a=aa%
SET VAR=%VAR:h=hh%
SET VAR=%VAR:o=oo%
SET VAR=%VAR:l=ll%
ECHO %VAR%


Mostraría "hhoollaa"

Extracción de carácteres:


Bien esta es una parte muy interesante, nos permita obtener "trozos" de variables llamados subcadenas, existen varias formas para ello, siendo la principal:


SET VariableResultado=%VariableOriginal:~m,n%


Almacena en la VariableResultado la subcadena que existen en la VariableOriginal desde la posición "m" durante "n" carácteres.

Ejemplo:

SET VAR=123456789
SET RES=%VAR:~3,2%
ECHO %RES%


Mostraria por pantalla:
45 (los dos caracteres a partir del tercero)

Como en la sustitución de carácteres, la VariableResultado y la VariableOriginal pueden ser las mismas.

Si "m" o "n" son iguales a 0 pueden omitirse, por ejemplo:


SET VAR=123456789
SET RES1=%VAR:~,5%
SET RES2=%VAR:~0,5%
IF %RES1%==%RES2% ECHO Funciona
ECHO %RES1%=%RES2%


Mostraria por pantalla, "Funciona" y despues:
12345=12345

Lo mismo con el siguiente code:

SET VAR=123456789
:: Lo siguiente significa extraer a partir del caracter 5º hasta el final
SET RES1=%VAR:~5%
SET RES2=%VAR:~5,4%
IF %RES1%==%RES2% ECHO Funciona
ECHO %RES1%=%RES2%


Mostraria primero por pantalla "Funciona" y despues:
6789=6789

Estos metodos abreviados son utiles para cuando no conocemos el numero de caracteres de la variable, sobre todo el 2º, ya que si queremos extraer los 3 ultimos caracteres pero no sabemos a partir del cual seria eso no lo podriamos hacer.

Ejemplos bastante usados:

SET DIA=%DATE:~,2%
SET MES=%DATE:~3,2%
SET AÑO=%DATE:~6%


Lo mismo para sacar las horas, minutos y segundos de la variable %TIME%, etc...

sirdarckcat