Antworten:
Wenn Sie den START
Befehl zum Ausführen jedes Programms verwenden, erhalten Sie das, was Sie benötigen:
START "title" [/D path] [options] "command" [parameters]
Jeder START
Aufruf führt den in seinem Parameter angegebenen Befehl aus und kehrt sofort zurück, sofern er nicht mit einem /WAIT
Schalter ausgeführt wird.
Das gilt für Kommandozeilen-Apps. Apps ohne Befehlszeile kehren ohnehin sofort zurück. Wenn Sie also alle asynchron ausführen möchten, verwenden Sie START
.
Wenn Sie einige der vorherigen Antworten kombinieren, können Sie es versuchen start /b cmd /c foo.exe
.
Wenn Sie als einfaches Beispiel die Versionen von Java / Groovy / Grails / Gradle ausdrucken möchten, können Sie dies in einer Batch-Datei tun:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Wenn Sie so etwas wie Process Explorer (Sysinternals) haben, werden einige untergeordnete cmd.exe-Prozesse mit jeweils einem Java-Prozess angezeigt (gemäß den obigen Befehlen). Die Ausgabe wird in beliebiger Reihenfolge auf dem Bildschirm gedruckt.
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
am Anfang, was beim Ausführen des Skripts verhindert, dass alle Befehle an die Konsole zurückgegeben werden. Das @
ist ähnlich, aber nur für diesen einzelnen Befehl. Also, manchmal wirst du sehen @echo off
.
Mit dem Befehl start können Sie Hintergrundprozesse erzeugen, ohne neue Fenster zu starten:
start /b foo.exe
Der neue Prozess kann mit STRG-C nicht unterbrochen werden. Sie können es nur mit STRG-BREAK beenden (oder durch Schließen des Fensters oder über den Task-Manager).
BREAK
in diesen Tagen auf Tastaturen?
Erstellen Sie eine Batchdatei mit den folgenden Zeilen:
start foo.exe
start bar.exe
start baz.exe
Der Befehl start führt Ihren Befehl in einem neuen Fenster aus, sodass alle drei Befehle asynchron ausgeführt werden.
Verwenden Sie den Befehl START :
start [programPath]
Wenn der Pfad zum Programm Leerzeichen enthält, müssen Sie Anführungszeichen hinzufügen. In diesem Fall müssen Sie auch einen Titel für das sich öffnende Konsolenfenster angeben
start "[title]" "[program path]"
Wenn Sie Argumente angeben müssen, fügen Sie diese am Ende hinzu (außerhalb der Anführungszeichen).
start "[title]" "[program path]" [list of command args]
Verwenden Sie die Option / b, um das Öffnen eines neuen Konsolenfensters zu vermeiden (in diesem Fall können Sie die Anwendung jedoch nicht mit STRG-C unterbrechen
Es gibt eine dritte (und möglicherweise viel einfachere) Option. Wenn Sie mehrere Instanzen eines einzelnen Programms starten möchten, kann die Verwendung eines Unix-Befehlsprozessors wie Xargs oder GNU Parallel dies zu einem recht einfachen Vorgang machen.
Es gibt einen win32 Xargs-Klon namens PPX2 , der dies ziemlich einfach macht.
Wenn Sie beispielsweise ein Verzeichnis von Videodateien transkodieren möchten, können Sie den folgenden Befehl ausführen:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Wenn Sie dies auseinander nehmen, wird dir /b *.mpg
eine Liste von MPG-Dateien in meinem aktuellen Verzeichnis abgerufen. Der |
Operator leitet diese Liste an ppx2 weiter, das dann eine Reihe von Befehlen erstellt, die parallel ausgeführt werden sollen. 4 auf einmal, wie hier vom -P 4
Betreiber angegeben. Der -L 1
Operator weist ppx2 an, jeweils nur eine Zeile unserer Verzeichnisliste an ffmpeg zu senden.
Danach schreiben Sie einfach Ihre Befehlszeile ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
) und werden {}
automatisch für jede Zeile Ihrer Verzeichnisliste ersetzt.
Es ist nicht in jedem Fall universell anwendbar, aber viel einfacher als die oben beschriebenen Problemumgehungen für Batchdateien. Wenn Sie sich nicht mit einer Liste von Dateien befassen, können Sie natürlich auch den Inhalt einer Textdatei oder eines anderen Programms in die Eingabe von pxx2 einfügen.
Ich konnte nichts zum Laufen bringen. Am Ende habe ich nur Powershell verwendet, um Bat-Skripte zu starten. Manchmal funktioniert sogar das Starten von cmd / c nicht sicher, warum. Ich habe sogar Dinge wie start cmd / c notepad & exit ausprobiert
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
sorgfältig lesen sollen . :)