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 se explica el comando call, que ejecuta otro archivo por lotes desde un archivo por lotes: su uso básico, la diferencia con ejecutarlo sin call, cómo pasar argumentos y cómo llamar etiquetas, con código de ejemplo.
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]
Especifique el nombre del archivo por lotes y los parámetros que se le pasarán. La extensión (.cmd o .bat) se puede omitir, pero escribirla evita ejecutar un archivo no deseado cuando hay archivos con el mismo nombre.
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ó.
Si escribe el nombre de otro archivo por lotes sin call (por ejemplo, solo callee.cmd), el procesamiento pasa a ese archivo y no regresa al archivo que lo llamó. Use siempre call si desea que se ejecuten los comandos restantes del archivo que llama.
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.

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Recibir el código de salida del archivo llamado
Cuando el archivo llamado termina con exit /b <número>, ese valor se establece en ERRORLEVEL. El archivo que llama puede comprobarlo justo después de call para saber si tuvo éxito.
@echo off
call callee.cmd
if errorlevel 1 (
echo callee.cmd ha fallado.
exit /b 1
)
echo callee.cmd terminó correctamente.
Para más información sobre exit /b, consulte la siguiente página.
Llamar a una etiqueta del mismo archivo por lotes
call también puede llamar a una etiqueta del mismo archivo en lugar de a otro archivo. Anteponga : al nombre de la etiqueta y termine la subrutina con exit /b para regresar al llamador.
@echo off
call :greet Taro
call :greet Hanako
exit /b
:greet
echo Hola, %1.
exit /b
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.
Resumen
- Para ejecutar otro archivo por lotes y volver al llamador, use
call - Pase los argumentos después del nombre del archivo, como en
call callee.cmd 1, y recíbalos con%1 - Llame a una etiqueta del mismo archivo con
call :etiquetay regrese conexit /b - Para ejecutar sin esperar a que termine, use
start