miércoles, 3 de diciembre de 2008

Ideas generales para crear un .bat III

A veces aparece en algunas ocasiones la frase 'Salir? (s/n)'. Esto determina una variable. En los progamas por lotes también se pueden hacer variables.
Las vamos a hacer con el comando set. Ponemos:

set /p 'random'= (en caso de que la variable sea un número)
set /p var= (en el caso de no ser un número)

Con ésto, la aplicación espera a que demos una respuesta antes de seguir. Para deterinar la acción que hará el .bat al escribir una cosa u otra empleamos if.

set /p var=
if "%var%" == "a" start
if "%var%" == "b" exit

Esto hará que al escribir a y pulsar intro nos inicie una ventana, y que al escribir b y pulsar intro, se cierre el .bat.
Con los números existen más opciones, en base a esta tabla:

EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que o igual
GTR - mayor que
GEQ - mayor que o igual

La opción EQU se sustituye normalmente por == . Ejemplos:

if "%random%" == "2" start
if "%random%" NEQ "2" echo mal
if "%random%" LSS "2" cls

Devolverá:

Si el número escrito es 2, se inicia una ventana.
Si el número escrito no es 2, aparece la palabra mal.
Si el número escrito es menor que 2, se borra la pantalla.

Otra cosa que se pueden hacer con las variables es dividir las secuencias. Si se escribe una cosa, se hace una secuencia. Para ello utiizamos goto. El comando goto dirige a una etiqueta. La etiqueta tiene que tener un nombre sin espacios y empezando por dos puntos. Ej:

goto hola

:hola
echo adios
pause
exit

Si esto lo combinamos con variables, sería así:

set /p var=
if "%var%" == "a" goto a
if "%var%" == "b" goto b

:a
echo Bien
pause
time /t
pause

:b
echo Mal
pause
date /t
pause

Entonces, podemos saber lo que pasa detrás de la frase 'Salir? (s/n)'.

set /p var=
if "%var%" == "s" exit
if "%var%" == "S" exit
if "%var%" == "n" cls
if "%var%" == "N" cls

Es recomendable al poner variables de palabras o letras, poner también la mayúscula. Puede que el usuario tenga Bloq Mayús activado.

2 comentarios:

Sario dijo...

buen post, aunque prefiero los archivos .sh
Saludos

PML88 dijo...

Sí, y yo... pero es lo que sé.