Está en la página 1de 3

SET para asignacin de valores

Con el comando SET podemos asignar valores a una variable.


SET [variable=[cadena]]
variable Especifica el nombre de la variable de entorno.
cadena

Especifica una serie de caracteres que se asignan a la variable.

SET aritmtico
El comando SET tambin nos permite definir variables de entorno a partir de operaciones
aritmticas simples con nmeros enteros, ya que lleva incorporada una calculadora bsica:
SET /A expresin
El modificador /A especifica que la cadena a la derecha del signo de igual es una expresin
aritmtica que es evaluada. El evaluador de expresiones es bastante simple y es compatible
con las siguientes operaciones, en orden de precedencia decreciente:
()
- agrupar
*/%
- operadores aritmticos
+- operadores aritmticos
<< >>
- mays lgica
&
- AND (de bits)
^
- XOR (de bits)
|
- OR (de bits)
= *= /= %= += -= - asignacin
&= ^= |= <<= >>=
,
- separador de expresin
Si se utiliza cualquiera de los operadores lgicos o de mdulo, ser necesario escribir la
cadena entre comillas. Cualquier cadena que no sea numrica en la expresin, sern tratadas
como nombres de la variable de entorno cuyos valores son convertidos a nmeros antes de ser
utilizados.
Si un nombre de la variable de entorno es especificada pero no definida en el entorno actual,
entonces se utiliza el valor cero. Esto permite hacer operaciones aritmticas con los valores
de la variable de entorno evitando el escribir todos estos signos % para obtener sus valores.

Ejemplos:
convertir a pesetas (ej.1200)
SET /A euros=%1, ptas=euros*166386/1000
199663
multiplicamos esa cantidad por 2 al cubo (i.e., aadimos 3 ceros "binarios" a su derecha)
set /a ptas="ptas<<3"
<-- las comillas son necesarias por la
1597304
ambigedad del operador <
Lanzamiento de un dado ...
set /a %random% % 6 + 1
4
Podemos utilizar nmeros hexadecimales
J:\>SET /A ff=0xF0CA + 0xFEA
65716

Opciones Avanzadas (Subcadenas)


Declaramos ABC=abcdefghijklmnopqrstuvwxyz
set ABC=abcdefghijklmnopqrstuvwxyz
%ABC:~desplazamiento,longitud%

%ABC:~6,5% (desplaza 6 caracteres y muestra 5 a partir del 6to)


ghijk
%ABC:~10% (desplaza 10 y si no se especifica la longitud utiliza el resto de la cadena como
longitud)
klmnopqrstuvwxyz
Si algn nmero (desplazamiento o longitud) es negativo, entonces el nmero usado es la longitud del
valor de la variable de entorno agregado al desplazamiento o longitud especificados.
%ABC:~-10% (extrae los 10 ltimos)
qrstuvwxyz
%ABC:~0,10% (extrae los 10 primeros, o sea, se ubica al principio de la cadena y muestra 10)
abcdefghij
%ABC:~0,-2% (muestra todos menos los ltimos 2)
abcdefghijklmnopqrstuvwx
%ABC:~-2% (desplaza 0 muestra los ltimos 2)
yz
Anteriormente si queramos obtener la fecha o la hora en 3 variables utilizando una sola lnea
debamos hacer esto:
set dia=%date:~0,2% & set mes=%date:~3,-5% & set ao=%date:~-4%
Ahora:
Obtener la fecha en 3 variables utilizando un solo set /a.
set /a dia=%date:~0,2%,mes=%date:~3,-5%,ao=%date:~-4%
Obtener la hora en 3 variables utilizando un solo set /a (se complica un poco ms).
set /a hora=%time:~0,2%,min=%time:~3,-6%,a=%time:~6%,b=%time:~-2%,seg=a*100+b
Incluso si queremos combinar la 8 y la 9 para ahorrarnos un set /a podemos.
set /a dia=%date:~0,2%,mes=%date:~3,-5%,ao=%date:~-4%, hora=%time:~0,2% ,
min=%time:~3,-6%, a=%time:~6%, b=%time:~-2%, seg=a*100+b
Sustitucin de variables: Con el comando set y el modificador /a (set /a) podemos realizar
sustituciones simples y compuestas(con algunas excepciones) de subcadenas y recuerden que siempre
con el modificador /a hablamos de nmeros.

Algunos ejemplos:
set a=123456789
a) set /a a=%a:123=999% (Sustituimos la subcadena numrica 123 por 999)
999456789
b) set /a a=(%a:123=456%),(%a:456=789%),(%a:789=8910%)
(Sustitumos 123 por 456, 456 por 789 y 789 por 8910)
4564568910

SET para lectura por teclado


Con el comando SET podemos pedir valores al usuario mediante el teclado y asignarlos a una
variable. De este modo podremos luego actuar con dicha variable en funcin del valor que contenga y
construir mens de opciones para el usuario.
SET /P variable=[promptString]
prompString indica el texto que se mostrar por pantalla para informacin del usuario
variable es donde se almacena el valor introducido por el usuario
para ello debemos combinar el comando SET con el comando IF.

También podría gustarte