¿Cómo iniciar una aplicación sin esperar en un archivo por lotes?

156

¿Hay alguna forma de ejecutar una aplicación sin esperar en un archivo por lotes? He probado el startcomando pero solo crea una nueva ventana de comando.

Mark Attwood
fuente
3
Nota: para aquellos que hacen cosas complicadas con los scripts por lotes de Windows: si un proceso C se startedita dentro de un callarchivo -bat .bat B (que a su vez se llamó desde A ), y C permanece abierto después de que B finalice (digamos C es un servicio o algo que solo espera a que sucedan cosas y no tiene un punto final fijo hasta que el sistema operativo se apaga), el padre A que contenía el callpuede no ser capaz de terminar como se esperaba a menos que el proceso C se cierre o esté delicado. Aquí hay un ejemplo simple: codepad.org/KLglXDnZ
SeldomNeedy

Respuestas:

306

Estoy haciendo una suposición aquí, pero su startinvocación probablemente se ve así:

start "\Foo\Bar\Path with spaces in it\program.exe"

Esto abrirá una nueva ventana de consola, usando "\ Foo \ Bar \ Path con espacios en él \ program.exe" como título.

Si usa startalgo que está (o necesita estar) rodeado de comillas, debe poner comillas vacías como primer argumento:

start "" "\Foo\Bar\Path with spaces in it\program.exe"

Esto se debe a que startinterpreta el primer argumento citado que encuentra como el título de la ventana para una nueva ventana de consola.

Joey
fuente
17
Gran consejo con comillas dobles antes de la ruta real. Nunca hubiera adivinado esto. Gracias por compartir.
Alexandru Dicu
gracias ayudó. También usé la opción / SEPARAR como se menciona en ss64.com/nt/start.html
Ayusman
1
@Ayusman: esas opciones son solo para programas de 16 bits. Seguramente espero que todavía no tenga ninguno de esos.
Joey
44
Por supuesto, no tiene que ser comillas vacías ... puede darle un título relevante real. Lo recomendaría encarecidamente, ya que lo hará mucho más claro para otras personas que ven lo que está sucediendo. start "Obligatory Atavistic Window Title" "\Foo\Bar\Path with spaces in it\program.exe"
Shiser
1
Después de horas de buscar en Google, finalmente encuentro la respuesta. ¡Gracias!
Sellorio
9

Si tu exe toma argumentos,

start MyApp.exe -arg1 -arg2
Shital Shah
fuente
8

Usé start / b para esto en lugar de solo start y se ejecutó sin una ventana para cada comando, por lo que no hubo que esperar.

Ed Bayiates
fuente
¡Exactamente lo que estaba buscando!
Fábio Amorim
4

Si startno puede encontrar lo que está buscando, hace lo que usted describe.

Dado que lo que está haciendo debería funcionar, es muy probable que esté omitiendo algunas citas (o agregando extras).

egrunin
fuente
Sí, puse dos citas. Pero son necesarios para el nombre de ruta larga. ¿Cómo resolver el problema?
Mark Attwood