En esta entrada vamos a tratar la programación batch des de cero, con ejemplos que funcionan perfectamente (a diferencia de otros blogs, que no siempre es así).
¿Que son los archivos batch?
Los archivos Batch o bat son archivos de procesamiento por lotes, son solo de texto y la extensión es .bat. Contiene un conjunto de comandos de DOS y no requiere un compilador. Se ejecutan de forma secuencial, del principio al final (de arriba a abajo).
Aclaración: Cualquier comando en DOS puede usar Batch
Algunos Windows permiten la extensión .cmd
¿Que puedo hacer con un Batch?
Muchas cosas, cualquier tipo de cálculo, programar alguna tarea, instalar programas, modificar el registro, eliminar virus, modificar aspectos del sistema operativo… Casi cualquier cosa que os imaginéis.
¿Cómo se escribe un archivo Batch?
Para escribir un archivo bach deberemos de abrir el bloc de notas y escribir los comandos, hasta aquí todo normal. A continuación iremos a archivo/guardar como y pondremos el nombre-que-deseemos.bat y la extensión seleccionaremos todos los ficheros.
Comandos básicos
@echo off –> Sirve para evitar que nos muestre los «comandos» en pantalla, algunas lineas de código.
echo –> me muestra el mensaje en pantalla (lo que sea), se debe poner echo y después lo que queramos mostrar
pause –> el programa se detiene pide una confirmación para continuar, es decir una tecla
exit –> el programa finaliza y se cierra
¿Que evitaremos ver con @echo off?
Si ponemos al principio de nuestro programa @echo off evitaremos que se nos muestre los comandos de a continuación. De todos modos si no lo ponemos nuestro «programa» funciona igual.
Title –> Establece el título de nuestra ventana
Color –>Podemos cambiar el color de la ventana y/o de la letra.
Podemos cambiar:
5 -> indica que queremos cambiar el color de la ventana
E -> indica que queremos cambiar el color de las letras
Codigo de colores:
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
A = Verde claro
B = Aguamarina clara
C = Rojo claro
D = Púrpura claro
E = Amarillo claro
F = Blanco brillante
echo –> Muestra un mensaje en la pantalla DOS (sin punto)
echo. –> Sirve para saltar una linea en la pantalla (con punto)
rem –> Solo se muestra el texto que pongamos después del código en el modo edición. Si ejecutamos el programa veremos que no nos muestra los apuntes. Útil para expliaca que hace cada cosa.
del –> Elimina archivos. Pones el comando y luego la ruta del archivo y lo elimina. Ej del c:\para-eliminar.txt
start –> Sirve para abrir cualquier cosa (con las claves del registro no funciona). Solo hace falta poner start y el nombre del programa, la pagina web, el documento… Tal y como si lo abrieramos con el ejecutador (tecla win+r). Para modificar el registro regedit.exe ruta-del-fichero.reg, nos pedirá confirmación.
taskkill –> Termina los procesos. Se pone: taskkill -im nombre-del-proceso.exe si es por ejemplo un documento de texto que no lo hemos guarado nos dirá si lo deseamos guardar. Pero si no queremos que nos salga esto podemos forzar el cierre mediante «-f» (sin comillas) al final de la linea y separado por un espacio.
pause –> para el programa y precisa que se pulse una tecla para continuar con la ejecución
exit –> Forzamos la finalización del código sin importar si queda código o no
cls –> Sirve para borrar el código que se nos muestra en la ejecución, solo el mostrado. No sirve para el consiguiente.
Variables
Las variables es un lugar donde podemos almacenar distintos tipos de datos los cuales podremos recurrir a lo largo del programa.
Detalles: El nombre de la variable será la combinación de letras y números al que nos referiremos a nuestro programa para obtener el valor. El valor es el contenido de la variable.
Para recurrir a la variable deberemos de poner el nombre de la variable entre %%. Es decir si queremos recurrir a: variable1, deberemos de poner %variable1%. Para mostrar el valor en pantalla deberemos poner echo delante quedando echo %variable1%.
set –> Seria el nombre para crear una variable cualquiera no modificable excepto con el código fuente.
Se usa: set nombre-variable=valor-variable
ejemplo: set hola=bien venido
Dónde hola es el nombre y bien venido el valor
Las siguientes variables el usuario deberá de poner el valor, pero operarán del mismo modo.
set /p –> es una variable que nos pedirá que ingresemos el valor, pero no nos realizará operaciones con él, solo nos mostrará la fórmula con los valores.
Se usa: set /p nombre-variable=lo que queramos:
ejemplo: set /p nombre=pon tu nombre
set /p es la orden, nombre es el nombre de la variable y pon tu nombre lo que mostramos al usuario.
set /a –> Nos permite operar con números, las letras equivalen a 0, y el resultado no muestra decimales, por lo tanto si es un 3,9 muestra 3.
Se usa:
set /p nota1=Escribe tu nota:
set /p nota2=Escribe tu segunda nota:
set /a promedio=(%nota1%+%nota2%)/2
echo.
echo.
echo Tu promedio es: %promedio%
pause
exit
Por lo tanto hemos de poner set /a cuando vaiamos a realizar la operación no para recoger los datos.
Condicionales
Los condicionales son aquel código que precisa de un antecedente para realizar una acción. Si está nublado lloverá, sería un ejemplo cuotidiano.
Se ha de poner un condicional, el condicional funciona de este modo.
if %var% LEQ 5 (echo Estas desaprobado) else (echo Aprobaste el Curso)
El if introduce el condicional, %var% recurre a la variable, LEQ 5 dice cual es el margen, (echo Estas desaprobado) nos muestra si el resultado es inferior al 5 en este caso, else es lo que nos separa las condiciones (echo Aprobaste el Curso) es si es igual o superior al 5 en este caso.
Código para saber si estamos aprobados o no
@echo off
set /p nota1=Escribe tu primera nota:
set /p nota2=Escribe tu segunda nota:
set /a promedio=(%nota1%+%nota2%)/2
echo.
if %promedio% LEQ 5 (echo Estas desaprobado) else (echo Aprobaste el Curso)
pause
exit
Algunos comandos que nos permiten sustituir LEQ por diferentes formas de actuar.
== Si son iguales
LSS Si es menor que…
GTR Si es mayor que…
LEQ Si es menor o igual que…
GTR Si es mayor o igual que…
Etiquetas o menús
Que haga dependerá de si el valor es correcto o no, dependiendo de este factor el programa se saltara una lineas de código u otras.
Se usa como un condicional pero la diferencia es que si pasa la primera condición accede al apartado que tu le indiques y sino pasa al otro apartado.
ejemplo:
@echo off
set /p usuario=Ingrese su nombre de Usuario:
if %usuario%==admin (goto sistema) else (goto error):error
cls
echo Acceso denegado
echo Lo sentimos, no esta autorizado para ingresar en el sistema
pause
exit
:sistema
cls
echo.
echo ..::[Has entrado]::..
pause
exit
La explicación es que si se introduce el condicional pero las condiciones son goto xxxx irá el lugar con dicho nombre. Como le hemos puesto goto sistema si pone admin cuando lo ponga irá a la linea de :sistema. Si por lo contrario no lo pone irá a la linea de :error. Notemos que en las etiquetas ponemos «:» (sin comas) antes de la etiqueta. Si quitamos el exit del :error después de ingresar con un nombre que no sea admin nos entrará. Los nombres pueden ser los que queramos solo debemos de usar los «:«.
Si ponemos un :login al inicio i al final de la etiqueta :error no ponemos un exit sinó un goto :login cada vez que no pongamos admin nos volverá al inicio.
Comandos adicionales
Estos tipos de comandos se pueden añadir detrás de diferentes ordenes para modificar su forma de actuar y así variar el proceso sin cambiar el final. Son útiles para mejorar el trabajo. Va después de la orden separado por un espacio en ambos lados. Cuando los leáis lo entenderéis. Usaermos el comando eliminar pero sirve para muchos otros, solo se trata de ir investigando.
del p/ ruta-del-archivo -> este comando nos pide confirmación al borrar los archivos.
del f/ ruta-del-archivo -> Aquí se nos forzará a borrar el archivo, si está protegido nos mostrará el error: Acceso denegado.
del s/ ruta-del-directorio -> Borra un directorio entero con todos los archivos que estén dentro. Nos pedirá confirmación.
del q/ ruta-del-archivo -> Nos elimina los archivos de forma silenciosa, no pide confirmación ni nada.
Se pueden combinar varios de estos comandos adicionales para conseguir una mejor manera de desenvolupamiento.
Este tutorial/manual nos enseña algunos comandos muy básicos, si les ha gustado comenten.