Sustitución de caracteres:
Para sustituir uno o varios caracteres de una variable por otro hacemos lo siguiente:
Código:
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:
Código:
SET VAR=hijo
SET RESULTADO=%VAR:o=a%
ECHO %RESULTADO%
Mostrara por pantalla "hija"
El siguiente codigo también haria lo mismo:
Código:
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:
Código:
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.
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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...