start - Ejecución de otros archivos por lotes
Llamar a varios archivos por lotes creados por separado desde un archivo por lotes para la programación de tareas es un caso común al usar archivos por lotes.
Además, ¿no es común ejecutar un archivo exe específico desde un archivo por lotes?
En esta página, explicamos de manera clara y sencilla el comando start para ejecutar otros programas o archivos por lotes desde un archivo por lotes, desde el uso básico hasta cómo configurar las opciones.
Uso básico del comando start
El uso básico del comando start es el siguiente:
start [Título] [Ruta del programa a ejecutar] [Parámetros para el programa]
En términos más detallados, se vería así, pero en la mayoría de los casos solo se especifica el título del archivo a ejecutar, el nombre del archivo a ejecutar y los parámetros que se pasan al archivo a ejecutar.
start [Título] [/d <ruta del programa a ejecutar>] [/i] [{/min | /max}] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | /belownormal}] [/node <nodo NUMA>] [/affinity <HEX>] [/wait] [/b] [/machine <x86|amd64|arm|arm64>] [programa adicional] [parámetros para el programa]
El comando start ejecuta el programa especificado en la ruta, pero no espera a que el programa finalice antes de continuar con la siguiente tarea.
Ejemplos con el comando start
Ejecutar otro archivo por lotes
Como ejemplo, preparemos los archivos caller.cmd y callee.cmd para ejecutar directamente.
El archivo caller.cmd se verá así:
@echo off
echo Iniciando caller.cmd.
start callee.cmd
echo caller.cmd ha finalizado.
Asegúrese de que el archivo esté codificado en Shift-JIS.
De manera similar, callee.cmd se verá así:
@echo off
echo Iniciando callee.cmd.
rem Esperando 5 segundos
timeout /t 5 /nobreak >nul
echo callee.cmd ha finalizado.
Una vez configurado como se muestra arriba, al ejecutar caller.cmd, se muestra otra ventana de la línea de comandos y se ejecutan ambos archivos por lotes.
El orden en que se ejecutan es el siguiente:
Se ha iniciado caller.cmd.
Se ha iniciado callee.cmd.
caller.cmd ha finalizado.
callee.cmd ha finalizado.
Después de que caller.cmd finaliza, callee.cmd también finaliza.
caller.cmd es un proceso que finaliza instantáneamente, pero callee.cmd espera 5 segundos utilizando el comando timeout.
De esta manera, al usar el comando start, se ejecuta la siguiente tarea sin esperar a que se complete el archivo por lotes que se ha llamado.
Ejecutar un archivo por lotes con argumentos
A continuación, se explica cómo ejecutar un archivo por lotes con argumentos.
Prepararemos los archivos caller.cmd y callee.cmd para ejecutar directamente.
@echo off
echo Iniciando caller.cmd.
start callee.cmd 1
start callee.cmd 2
echo caller.cmd ha finalizado.
@echo off
echo Iniciando callee.cmd.
echo Ejecución número %1.
rem Esperando 5 segundos
timeout /t 5 /nobreak >nul
echo callee.cmd ha finalizado.
Una vez configurado como se muestra arriba, al ejecutar caller.cmd, se muestra otra ventana de la línea de comandos y se ejecutan ambos archivos por lotes.
El resultado es el siguiente:
Esperar a que el programa llamado finalice
Si desea esperar a que finalice el archivo por lotes llamado y luego continuar con la siguiente tarea, use la opción /wait del comando start.
Al usar la opción /wait, esperará a que el programa llamado finalice antes de continuar con la siguiente tarea.
Alternativamente, también puede usar el comando call para esperar a que finalice el programa llamado antes de continuar con la siguiente tarea.
Se explica en detalle el comando call en la siguiente página.