Respuestas:
El uso del START
comando para ejecutar cada programa debería obtener lo que necesita:
START "title" [/D path] [options] "command" [parameters]
Cada START
invocación ejecuta el comando dado en su parámetro y regresa de inmediato, a menos que se ejecute con un /WAIT
interruptor.
Eso se aplica a las aplicaciones de línea de comandos. Las aplicaciones sin línea de comando regresan inmediatamente de todos modos, así que para estar seguro, si desea ejecutar todo de forma asíncrona, úselo START
.
Combinando un par de respuestas anteriores, podrías intentarlo start /b cmd /c foo.exe
.
Para un ejemplo trivial, si desea imprimir las versiones de java / groovy / grails / gradle, puede hacerlo en un archivo por lotes:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Si tiene algo como Process Explorer (Sysinternals), verá unos pocos procesos cmd.exe secundarios, cada uno con un proceso java (según los comandos anteriores). La salida se imprimirá en la pantalla en el orden en que terminen.
start /b : Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
cmd /c : Carries out the command specified by string and then terminates
echo off
al principio que, cuando ejecute la secuencia de comandos, evitará que todos los comandos se repitan en la consola. El @
es similar pero solo para ese comando único. Entonces, a veces lo verás @echo off
.
Puede usar el comando de inicio para generar procesos en segundo plano sin iniciar nuevas ventanas:
start /b foo.exe
El nuevo proceso no será interrumpible con CTRL-C; puede matarlo solo con CTRL-BREAK (o cerrando la ventana, o mediante el Administrador de tareas).
BREAK
en los teclados en estos días?
Cree un archivo por lotes con las siguientes líneas:
start foo.exe
start bar.exe
start baz.exe
El comando de inicio ejecuta su comando en una nueva ventana, por lo que los 3 comandos se ejecutarían de forma asincrónica.
Use el comando START :
start [programPath]
Si la ruta al programa contiene espacios, recuerde agregar comillas. En este caso, también debe proporcionar un título para la ventana de apertura de la consola
start "[title]" "[program path]"
Si necesita proporcionar argumentos, agréguelos al final (fuera de las comillas)
start "[title]" "[program path]" [list of command args]
Use la opción / b para evitar abrir una nueva ventana de consola (pero en ese caso no puede interrumpir la aplicación usando CTRL-C
Hay una tercera opción (y potencialmente mucho más fácil). Si desea activar múltiples instancias de un solo programa, usar un procesador de comandos de estilo Unix como Xargs o GNU Parallel puede hacer que sea un proceso bastante sencillo.
Hay un clon win32 Xargs llamado PPX2 que lo hace bastante sencillo.
Por ejemplo, si desea transcodificar un directorio de archivos de video, puede ejecutar el comando:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Seleccionando esto, dir /b *.mpg
toma una lista de archivos .mpg en mi directorio actual, el |
operador canaliza esta lista en ppx2, que luego construye una serie de comandos para ejecutar en paralelo; 4 a la vez, según lo especificado aquí por el -P 4
operador. El -L 1
operador le dice a ppx2 que solo envíe una línea de nuestro directorio a ffmpeg a la vez.
Después de eso, solo escribe su línea de comando ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
), y {}
se sustituye automáticamente por cada línea de su listado de directorio.
No es universalmente aplicable a todos los casos, pero es mucho más fácil que usar las soluciones alternativas de archivos por lotes detalladas anteriormente. Por supuesto, si no está lidiando con una lista de archivos, también puede canalizar el contenido de un archivo de texto o cualquier otro programa en la entrada de pxx2.
No pude hacer que nada funcionara. Terminé usando Powershell para iniciar scripts de murciélagos. A veces, incluso comenzar cmd / c no funciona, no estoy seguro de por qué. Incluso probé cosas como iniciar el bloc de notas cmd / c y salir
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
cuidadosamente. :)