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.