Ver todos los comandos disponible en comtecknet: Comandos Batch
Comando: if
Disponibles en Windows:
- Windows Xp/2003: Sí
- Windows Vista: Sí
- Windows Seven: Sí
¿Que hace este comando?
El comando if es uno de los comandos más inportantes de la programación batch. Se utiliza para comparar dos condiciones para actuar de una forma u otra dependiendo de la condición.
Parámetros del comando:
El comando if en sí solo tiene 1 parametro destacable, pero la mayoría de las veces se utilizan expresiones que sirven para comparar.
- NOT –> Utiliza una condición falsa, cuando se utiliza suele ir acompañado de la expresión exist
- EXIST archivo –> if comprueba si existe un archivo, para ello se le dará la ruta del mismo, en caso de que exita hará una funcion y si no hara otra.
- ERRORLEVEL numero –> Especifica una condición verdadera. Esta expresión la veremos usando un comando externo llamado choice.
- Cadena == Cadena –> Compara las dos cadenas para saber si son iguales, las cadenas pueden ser el contenido de variables.
- /l –> La función de este parámetro es ignorar mayúsculas y minúsculas cuando se comparan cadenas.
Operadores de comparación:
En batch si queremos comparar por ejemplo si 4 es mayor o igual que 3 la comparación que se utilizaría es “>=” pero esto la terminal no lo entiende y al ver el caracteer “>” intentará redireccionar la informacion a un fichero. ¿Cómo solucionamos esto?, la respuesta es usando una serie de operadores de comparacion.
- EQU –> igual
- NEQ –> no igual
- LSS –> menor que
- LEQ –> menor que o igual
- GTR –> mayor que
- GEQ –> mayor que o igual
Sintaxis:
La sintaxis larga de if es:
if [NOT] [/l] expresion1 [Op_condición] expresion2 (código) else (código)
Ejemplos:
- Comprobando una igualdad.
Una de las formas más usadas es para comparar si dos datos son iguales, estos datos pueden ser cadenas o números.
En este ejemplo crearé un sencillo programa que preguntará al usuario un número, si el número introducido es 10 mostrará un mensaje sino volvera al inicio para preguntar de nuevo.
1 2 3 4 5 6 7 | @echo off :inicio set /p numero=Escribe un numero: if %numero%==10 (echo Has acertado. & pause) else (goto inicio) |
Lo que hace este programa es comprobar un número que ha sido introducido por el usuario para ver si es igual a 10, si el número es igual mostrara un mensaje para posteriormente salir del programa, en cambio si no es 10 volvera al principio.
También se podría haber utilizado el operador EQU:
1 | if %numero% EQU 10 (echo Has acertado. & pause) else (goto inicio) |
- Comprobando si existe o no un archivo
Para este ejemplo utilizaremos dos expresiones, NOT y EXIST. Con ellos comprobaremos si existe o no un archivo en el disco.
Veamoslo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @echo off :comprobar echo comprobando archivo. if exist "c:\Documento.txt" (echo El archivo existe & goto EOF) else (echo no existe & goto crear) :crear if not exist "c:\Documento.txt" (echo. & "c:\Documento.txt" & goto comprobar) else (echo Ya existe) :EOF pause |
Lo que se quiere hacer en este script es comprobar si existe “Documento.txt” en c, como no existe, if nos mandará a otra etiquita que, al comprobar que “Documento.txt” no exite, lo crea. Una vez creado nos manda al principio del código para volver a comprobar si existe “Documento.txt” como ahora sí está creado nos lo dirá y nos mandará a EOF (fin del programa) para salir de la aplicación.
- Usando errorlevel con el comando choice.
Me gustaría ver la parte de errorlevel creando un pequeño menu utilizando choice.exe.
Choice.exe es un comando externo que no se encuentra en los comandos propios de batct, si no que hay que descargarlo. Ya será el momento de hablar mas de él cuando dedique su entrada aparte.
El objetivo de este ejemplo será un menu, que apretando un número hara una función. Para ello comprobara el errorlevel para ver a que parte del código nos mandará.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | @echo off :inicio cls echo 1. uno echo 2. dos echo 3. tres echo 4. Salir choice Tu eleccion: /c:1234 if %errorlevel%==4 (goto salir) if %errorlevel%==3 (goto tres) if %errorlevel%==2 (goto dos) if %errorlevel%==1 (goto uno) :uno echo Has apretado 1. pause goto inicio :dos echo Has apretado 2. pause goto inicio :tres echo Has apretado 3. pause goto inicio :salir exit |
Vemos que al apretar uno de los 4 número a elegir choice irá recorriendo cada errorlevel hasta que encuentre el que sea igual al número que hemos puesto mandándonos a otra parte del código.
Entradas Relacinadas:








