En fin, ahora que he vuelto temporalmente al tema de Batch, me ha apetecido hacer este pequeño tutorial sobre lo que se podría llamar programación modular en Batch...
Es algo muy sencillo, no os asustéis por el nombre, y es una forma que suelo usar bastante en clases de programación, ya que, entre otras cosas, te facilita mucho las cosas a la hora de codear programas largos...
La cosa es muy sencilla, os explico:
Imaginad que teneis un programa en Batch, que consta de un menú de opciones, pero que son por ejemplo 10 o 20 opciones, y se podrían poner todas seguidas dentro del código de un .bat, si, pero al ser tantas opciones corremos el riesgo de liarnos y perdernos entre tantas líneas de code...
Pondré un ejemplo con un code sencillo, para que entendáis a lo que me refiero, aunque éste code no sería necesario dividirlo en módulos, porque ésto está mas bien orientado a programas con muchas líneas complejas de código, pero bueno...
Código
@echo off :menu echo PROBANDO LA MODULARIDAD echo. echo 1. Ver contenido de una unidad echo 2. Crear carpeta echo 3. Borrar carpeta echo 4. Salir set /p opcion=opcion: :1 set /p var=Escribe unidad que deseas visualizar goto menu :2 set /p nom=Selecciona el nombre de la carpeta echo carpeta creada correctamente goto menu :3 set /p borra= Nombre de carpeta a borrar echo carpeta destruida goto menu :4
Ahí teneis, un menú de opciones de los de toda la vida, ya sé que no son más que cuatro opciones de nada, pero quiero usar éste ejemplo sencillo para que se entienda...
Ahora voy a explicar cómo se modularía éste sencillo programa.
Creamos un archivo llamado director.bat con el siguiente código:
Código
Creamos otro archivo llamado borrando.bat con el siguiente código:
Código
Creamos otro archivo llamado creador.bat y le metemos el siguiente código:
Código
Creamos otro archivo llamado unidad.bat con el siguiente código:
Código
Bien, ahora viene la explicación...
Usando el comando call (llamar) se puede conseguir que un .bat llame a otro .bat (o a cualquier otro archivo de cualquier otra extensión), y vamos a aprovechar ese comando para hacer la modulación en éste programa...
Como veis, el archivo principal director.bat no hace más que crear el menú de opciones y llamar a los otros tres archivos, que son los que realmente se encargan de hacer que el programa realice las funciones que debe, según la opción que teclee el usuario.
Dado que la primera opción que hay es ver el contenido de una unidad, hemos creado el bat llamado unidad.bat, que como veis, en su interior tiene los comandos necesarios para visionar la unidad que escriba el usuario. La segunda opción es crear una carpeta, y el bat llamado creador.bat tiene los comandos necesarios para crear la carpeta con el nombre que el usuario pida por consola. La tercera opción es la de borrado de carpetas, para ello hemos creado el bat llamado borrando.bat que tiene los comandos necesarios para preguntarle al usuario por consola el nombre de la carpeta a borrar. Para la última opción (salir), no necesitamos hacer un .bat con el comando exit sino que directamente podemos llamar al comando en la misma línea, es decir, fijaos en la última línea del archivo director.bat
Código
Es decir, en lugar de estar todas las opciones del menú seguidas, como seria lo normal, cada opción es realizada por cada uno de los archivos .bat que hemos creado. Ya digo que en este caso el programa es pequeño, asi que nos bastaría con programarlo de la manera normal, pero ésto a la hora de programar cosas de mayor longitud de código nos sirve para no liarnos.
Si os fijais, lo que hace el archivo principal (es decir, director.bat) es mostrar el menú de opciones y, según el usuario teclee una u otra opción, llama a uno u otro .bat, en lugar de tener el código dentro del propio director.bat
Es decir, cada .bat representa una opción del menú mostrado por director.bat, pero director.bat no es el encargado de realizar la opción, sino simplemente muestra el menú y dependiendo de la tecla pulsada, llama a uno u otro bat para realizar una u otra operación...
Ventajas de programar de forma modular:
- Cuando se trata de programas que tienen decenas de opciones en los menús, y menús dentro de menús etc, el hecho de programar así nos facilita y agiliza mucho más la tarea, ya que vemos mejor los códigos de cada opción.
Desventajas de programar de forma modular:
- En lugar de crear solo un .bat con todo el código, creamos varios .bat`s, uno por cada opción que tenga el menú.
Autor: Invisible_Hack
Fuente: Professional Hackers 2006