Risposte:
L'uso del START
comando per eseguire ciascun programma dovrebbe fornirti ciò di cui hai bisogno:
START "title" [/D path] [options] "command" [parameters]
Ogni START
invocazione esegue il comando indicato nel suo parametro e restituisce immediatamente, a meno che non venga eseguito con a/WAIT
interruttore.
Questo vale per le app della riga di comando. Le app senza riga di comando tornano comunque immediatamente, quindi per essere sicuri, se vuoi eseguire tutte in modo asincrono, usa START
.
Combinando un paio di risposte precedenti, potresti provare start /b cmd /c foo.exe
.
Per un banale esempio, se si desidera stampare le versioni di java / groovy / grails / gradle, è possibile farlo in un file batch:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Se hai qualcosa come Process Explorer (Sysinternals), vedrai alcuni processi cmd.exe figlio ciascuno con un processo java (secondo i comandi sopra). L'output verrà stampato sullo schermo nell'ordine in cui terminano.
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
all'inizio che, quando esegui lo script, impedirà che tutti i comandi vengano ripetuti nella console. L' @
è simile, ma solo per questo singolo comando. Quindi, a volte vedrai @echo off
.
Puoi usare il comando start per generare processi in background senza avviare nuove finestre:
start /b foo.exe
Il nuovo processo non sarà interrompibile con CTRL-C; puoi ucciderlo solo con CTRL-BREAK (o chiudendo la finestra o tramite Task Manager.)
BREAK
tastiere in questi giorni?
Creare un file batch con le seguenti righe:
start foo.exe
start bar.exe
start baz.exe
Il comando start esegue il comando in una nuova finestra, quindi tutti e 3 i comandi verrebbero eseguiti in modo asincrono.
Utilizzare il comando START :
start [programPath]
Se il percorso del programma contiene spazi, ricorda di aggiungere le virgolette. In questo caso, devi anche fornire un titolo per la finestra della console di apertura
start "[title]" "[program path]"
Se è necessario fornire argomenti aggiungerli alla fine (al di fuori delle virgolette del comando)
start "[title]" "[program path]" [list of command args]
Utilizzare l'opzione / b per evitare l'apertura di una nuova finestra della console (ma in tal caso non è possibile interrompere l'applicazione utilizzando CTRL-C
C'è una terza opzione (e potenzialmente molto più semplice). Se vuoi far girare più istanze di un singolo programma, usare un processore di comandi in stile Unix come Xargs o GNU Parallel può rendere questo processo abbastanza semplice.
C'è un clone Xargs win32 chiamato PPX2 che lo rende abbastanza semplice.
Ad esempio, se si desidera transcodificare una directory di file video, è possibile eseguire il comando:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Selezionando questo, dir /b *.mpg
prende un elenco di file .mpg nella mia directory corrente, l' |
operatore reindirizza questo elenco in ppx2, che quindi crea una serie di comandi da eseguire in parallelo; 4 alla volta, come specificato qui -P 4
dall'operatore. Il-L 1
operatore dice a ppx2 di inviare solo una riga del nostro elenco di directory a ffmpeg alla volta.
Dopodiché, scrivi semplicemente la tua riga di comando ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
) e{}
viene automaticamente sostituito per ogni riga del tuo elenco di directory.
Non è universalmente applicabile a tutti i casi, ma è molto più semplice rispetto all'utilizzo delle soluzioni alternative dei file batch descritte sopra. Naturalmente, se non hai a che fare con un elenco di file, puoi anche reindirizzare il contenuto di un file di testo o qualsiasi altro programma nell'input di pxx2.
Non riuscivo a far funzionare nulla, alla fine ho usato PowerShell per avviare gli script di pipistrello .. a volte anche avviare cmd / c non funziona non so perché .. Ho anche provato cose come avviare il blocco note di cmd / c ed uscire
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
attentamente ogni voce . :)