Muchas veces vamos a necesitar dividir nuestro programa en partes (a partir de ahora las llamaremos menús), y que dependiendo alguna condición vaya a un menú u otro. Más adelante veremos un ejemplo de para qué sirve esto.
Para crear un menú pondremos en una lína el código :nombre (con los dos puntos), de forma que indicamos que ahí empieza un menú que se llama nombre. Luego usaremos el código goto nombre para ir al menú nombre. De esta forma vamos a hacer como ejemplo un programa que al empezar tenga un menu llamado frases en el que escriba dos frases, y luego tenga un comando goto frases, de forma que el programa vuelve atrás al menú frases y nunca acaba (esto se llama bucle). Este programa sería por ejemplo así:
@echo off title Bucle de ejemplo color 0A :frases echo 100101001001010010010100101001001010010010 echo 011010110110101101101011010110110101101101 goto frases exit
El código if nos sirve para hacer que en el caso de que algo sea cierto o falso haga otra cosa. Por poneros un ejemplo, imaginaos que queremos hacer la división de dos números, pero si el denominador es 0 no podemos hacerla, puesto que algo entre 0 es infinito. Por lo tanto tenemos que verificar que el número de abajo no sea 0 para que no dé error, y si es 0 que le vuelva a preguntar el número. Este programa lo crearemos ahora de ejemplo.
Pues bien, el código de if tiene esta estructura:
if %var%==valor (comando) else (comando2)
Esto hace que si la variable llamada «var» tiene el valor «valor» ejecute el código «comando», y si no tiene ese valor que realize el valor «comando2». También podemos eliminar la segunda parte si no la necesitamos y dejar el código de la siguiente forma:
if %var%==valor (comando)
De esta forma vamos a hacer el programa de dividir un número entre otro:
@echo off title Division de dos numeros set/p uno=Escriba el numerador :denominador set/p dos=Escriba el denominador if %dos%==0 (goto nosepuede) else (goto dividir) :nosepuede echo El denominador no puede ser cero. goto denominador :dividir set/a tres=%uno%/%dos% echo El resultado de %uno%/%dos% es %tres% pause>nul exit
Ahora vamos a remalcar un par de cosas. Primero que podemos sustituir el comando if por if not, de forma que realiza el comando si la condición no es verdad.
Lo segundo es que si os fijais usamos == en vez de un solo =. Cuando comparamos dos cosas tenemos que usar siempre el doble signo ==. Además de los signos igual podemos usar las siguientes cosas:
%var% == valor Verifica si var es igual al valor
%var% LSS valor Verifica si var es menor que el valor
%var% GTR valor Verifica si var es mayor que el valor
%var% LEQ valor Verifica si var es menor o igual al valor
%var% GEQ valor Verifica si var es mayor o igual al valor
Para finalizar vamos a hacer un ejemplo más que será un programa para hacer la media, pero esta vez no será entre dos números, sino que los elegirá el usuario. Este programa tendría la siguiente estructura:
@echo off title Hacer media de dos numeros :principio set/p cant=Entre cuantos numeros quiere hacer la media? set/a contador=%cant% set total=0 if %cant% LSS 2 (goto mal) else (goto pregunta) :mal echo Debe indicar un numero mayor o igual que 2 goto principio :pregunta set/p num=Escriba uno de los %cant% numeros set/a total=%total%+%num% set/a contador=%contador%-1 if not %contador% == 0 (goto pregunta) set/a media= %total% / %cant% echo. echo La media es %media% pause >nul exit
Aquí tenéis un ejemplo donde ponemos dos condiciones en el IF:
@echo off title Condiciones en el IF set/p test=Introduce tu edad: if %test% GTR 17 ( if %test% LSS 30 ( echo Puedes pedir la BECA tu solito ) else ( echo Ya no puedes pedir la BECA ) ) else ( echo Tus padres tienen que pedir la BECA ) pause>nul exit
Os dejo además un menú con opciones:
@echo off :Menu cls set opcion= echo Elige una opcion... echo. echo 1 - Reiniciar equipo 1 echo 2 - Reiniciar equipo 2 echo 3 - Reiniciar equipo 3 echo 4 - Salir set /p opcion= if (%opcion%) == (1) goto Re1 if (%opcion%) == (2) goto Re2 if (%opcion%) == (3) goto Re3 if (%opcion%) == (4) goto Salir echo. echo. Opcion incorrecta echo. pause goto Menu :Re1 shutdown -r -t 0 -m \\Equipo1 pause goto Menu :Re2 shutdown -r -t 0 -m \\Equipo2 pause goto Menu :Re3 shutdown -r -t 0 -m \\Equipo3 pause goto Menu :Salir Exit
One Comment