call - Ejecutar otros archivos por lotes
A medida que se amplía el uso de archivos por lotes, es común que existan múltiples archivos por lotes que realizan procesos similares dentro de un programa.
En tales casos, es ineficiente escribir el mismo proceso en varios archivos por lotes, y también aumenta el esfuerzo de mantenimiento.
Además, es común en el uso de archivos por lotes llamar a múltiples archivos por lotes creados por separado desde un archivo por lotes de ejecución programada.
En esta página, explicamos de manera clara cómo ejecutar otros archivos por lotes desde un archivo por lotes, desde el uso básico hasta la configuración de opciones.
Uso básico del comando call
Para llamar a otros archivos por lotes desde un archivo por lotes, use el comando call
.
El uso básico del comando call
es el siguiente:
call <nombre_del_archivo_por_lotes> [...parámetros]
No hay opciones, solo especifique el nombre del archivo por lotes y los parámetros que se pasarán a ese archivo por lotes.
Cuando se usa el comando call
, se ejecuta el archivo por lotes especificado y, una vez completado, regresa al archivo por lotes que lo llamó.
Ejemplo específico del comando call
Ejecución de otro archivo por lotes
Como ejemplo, preparemos caller.cmd
que se ejecuta directamente y callee.cmd
que se llama.
caller.cmd
será como sigue:
@echo off
echo caller.cmd ha comenzado.
call callee.cmd
echo caller.cmd ha terminado.
Asegúrese de que la codificación del archivo sea Shift-JIS
.
De manera similar, callee.cmd
será como sigue:
@echo off
echo callee.cmd ha comenzado.
echo callee.cmd ha terminado.
Después de configurar lo anterior, al ejecutar caller.cmd
, se mostrará lo siguiente:
Cuando se ejecuta caller.cmd
, el comando call
ejecuta callee.cmd
, y después de que callee.cmd
se completa, vuelve a caller.cmd
.
De esta manera, al usar el comando call
, el archivo por lotes que llama espera hasta que se complete el archivo por lotes llamado.
Pasar argumentos y ejecutar un archivo por lotes
A continuación, se explica cómo pasar argumentos y ejecutar un archivo por lotes.
Prepare caller.cmd
para ejecutar directamente y callee.cmd
para ser llamado.
caller.cmd
será como sigue:
@echo off
echo caller.cmd ha comenzado.
call callee.cmd 1
call callee.cmd 2
echo caller.cmd ha terminado.
callee.cmd
se describe de la siguiente manera.
@echo off
echo callee.cmd ha comenzado.
echo Es la ejecución número %1.
echo callee.cmd ha terminado.
Después de configurar como se indicó anteriormente, ejecute caller.cmd
y se mostrará lo siguiente.
Si desea lograr el procesamiento en paralelo
Al llamar a un archivo por lotes, puede haber ocasiones en las que desee ejecutar el siguiente proceso sin esperar a que se complete el archivo por lotes llamado.
Cuando usa el comando call
, espera a que se complete el archivo por lotes llamado antes de ejecutar el siguiente proceso.
Si desea ejecutar el siguiente proceso sin esperar a que se complete, use el comando start
.
El comando start
se explica en detalle en la siguiente página.