Wahrscheinlich möchten Sie, dass der START-Befehl die parallele Verarbeitung einleitet, obwohl dies über WMIC erfolgen könnte. Beachten Sie, dass das erste Argument als Fenstertitel behandelt wird, wenn es in Anführungszeichen steht. Deshalb ist mein erstes Argument eine leere Zeichenfolge. Die /B
Option führt den Befehl in demselben Fenster aus. Entfernen Sie es, wenn Sie für jeden Befehl ein neues Fenster wünschen.
Es gibt keine einfachen systemeigenen Stapelbefehle oder -optionen, die warten, bis eine Reihe paralleler Prozesse abgeschlossen ist.
Ich leite gerne einen unbenutzten Datei-Handle für jeden Prozess in eine Datei um, wodurch eine exklusive Sperre hergestellt wird. Ich kann dann feststellen, ob ein Prozess noch läuft, indem ich versuche (CALL )
, die gleiche Sperrdatei umzuleiten (effektiv eine Null-Operation). Wenn die Umleitung fehlschlägt, wird der Prozess noch ausgeführt. Erfolg zeigt an, dass der Prozess beendet wurde.
Der Test muss für jede der Sperrdateien in einer Abfrageschleife durchgeführt werden. Das Hinzufügen einer Verzögerung ist eine gute Idee, um zu verhindern, dass die Abrufschleife Ressourcen missbraucht.
@echo off set "lock=%temp%\%~nx0.lock" start "" /b "timeout" 5 9>"%lock%.1" start "" /b "timeout" 8 9>"%lock%.2" :wait timeout 1 /nobreak >nul 2>nul (for %%F in ("%lock%.*") do 9>"%%F" (call ) && del "%%F" || goto :wait) echo OK
Wenn Sie über eine große Anzahl paralleler Prozesse verfügen und die Anzahl der gleichzeitigen Prozesse begrenzen möchten, können Sie an https://stackoverflow.com/a/11715437/1012053 interessiert sein