Uso de archivos por lotes, Parte 4: La sentencia CALL

February 4

Si no hubieras adivinado por ahora, archivos por lotes pueden servir como un tipo rudimentario de lenguaje de programación. Una cosa que los lenguajes de programación modernos ofrecen es la posibilidad de modularizar código en trozos pequeños para que si usted cambia una pieza no se arriesga a cambiar accidentalmente cierto código no relacionado. Usted puede modularizar un archivo por lotes grande dividiéndola en los más pequeños y el uso de la sentencia CALL para invocar los módulos individuales según sea necesario.

Tomemos el caso de disponer de un sistema de menús que permite al usuario invocar cualquiera de una serie de funciones. Lo que vamos a hacer es poner cada una de las funciones en su propio archivo por lotes y utilizar la sentencia CALL en el archivo principal menú lotes para invocar la función seleccionada, que luego volver al menú para permitir al usuario seleccionar otra función.

Esto es lo que Menu.bat puede verse como:

ECHO OFF
: TOP
CLS
ECHO Bienvenido al menú principal! Aquí están sus opciones ...
ECHO.
ECHO A) realizar función AB) realizar función B
ECHO C) Realizar Función CD) realizar función D
ECHO.
ECHO Q) Salir
ECHO.
ELECCIÓN / C ABCDQ
GOTO% ERRORLEVEL%
: 5
GOTO: EOF
: 4
LLAME FuncD.bat
Hacia arriba
: 3
LLAME FuncC.bat
Hacia arriba
: 2
LLAME FuncB.bat
Hacia arriba
: 1
LLAME FuncA.bat
Hacia arriba

Y aquí está lo FuncA.bat puede verse como:

ECHO Este es Función A
PAUSA

A pesar de que nada interesante sucede aquí, es el inicio de un marco digno para un sistema de menú basado en comandos. Y hay algunos elementos que deben tenerse en cuenta. Trabajando de arriba a abajo, el primer mandamiento nuevo nos encontramos es el comando CLS. Este simple comando sólo borra la pantalla para que nuestro menú siempre saldrá verse bien por sí mismo. El ojo que discierne también se dará cuenta de algunas declaraciones de ECHO que se siguen inmediatamente por un punto. Esta es la forma de salida de una línea en blanco. Otra de las novedades es la incorporada en: etiqueta EOF. Esto evita la necesidad de tener que declarar su propia etiqueta que existe como la última línea del archivo (como mi: la etiqueta "Hecho" que se utiliza en otros consejos).

Esto nos lleva a las sentencias CALL. El parámetro especificado con CALL es el nombre del archivo por lotes que se va a invocar siguiente. Así, por ejemplo, si el usuario eligió la opción A en el menú, el archivo por lotes sería inmediatamente ir al: 1 etiqueta que causaría FuncA.bat a invocarse siguiente. Mi archivo FuncA.bat simplemente Echos una línea y hace una pausa. La declaración PAUSA provoca una línea para ser salida que dice "Pulse cualquier tecla para continuar...". A continuación, suspende la ejecución del archivo por lotes hasta que el usuario pulsa una tecla. Una vez que se pulsa una tecla, los ingresos por lotes, que en este caso significa que FuncA.bat termina y el control se reanuda de nuevo en el archivo principal menú lotes en la línea inmediatamente después de la llamada a FuncA.bat. Así que la próxima cosa que suceda será el TOP GOTO, que comienza todo de nuevo.

Tenga en cuenta que usted no tiene que poner otro "ECHO OFF" en la parte superior de FuncA.bat porque el estado ECHO se mantiene cuando se llama FuncA.bat.

Esta punta (13187) se aplica a Windows 7 y 8.