start - Ejecución de otros archivos por lotes

Mantenido el

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í:

caller.cmd
@echo off

echo Iniciando caller.cmd.

start callee.cmd

echo caller.cmd ha finalizado.
Si se produce un problema de caracteres extraños

Asegúrese de que el archivo esté codificado en Shift-JIS.

De manera similar, callee.cmd se verá así:

callee.cmd
@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.

×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>caller.cmd
Se ha iniciado caller.cmd.
caller.cmd ha finalizado.
C:\users\user>
×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
Se ha iniciado callee.cmd.
callee.cmd ha finalizado.

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.

caller.cmd
@echo off

echo Iniciando caller.cmd.

start callee.cmd 1

start callee.cmd 2

echo caller.cmd ha finalizado.
callee.cmd
@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:

×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
Esta es la primera ejecución.
callee.cmd ha finalizado.
callee.cmd se ha iniciado.
×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
Esta es la segunda ejecución.
callee.cmd ha finalizado.
caller.cmd ha finalizado.

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.

Prueba de confirmación

Problema de práctica

¿Cuál es el comando para llamar a un archivo por lotes desde otro archivo por lotes sin esperar a que se complete antes de continuar con la siguiente tarea?

sub.cmd
@echo off

echo Se ha iniciado sub.cmd.

rem Esperando 5 segundos
timeout /t 5 /nobreak >nul

echo sub.cmd ha finalizado.
回答がサーバーに送信されることはありません
#Símbolo del sistema #Archivos por lotes #Argumentos #Línea de comandos #Comandos