Warten für die parallele batch-Skripten
Ich habe 4 batch-Dateien. Ich will laufen one.bat
und two.bat
auf einmal, gleichzeitig. Nach Fertigstellung dieser zwei batch-Dateien, three.bat
und four.bat
ausführen sollten, auf einmal, parallel. Ich habe versucht, mit vielen Möglichkeiten, aber mot, funktioniert einwandfrei.
Kann mir jemand helfen über diese?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist leicht getan mit einer wesentlich vereinfachte version der Lösung, die ich zur Verfügung gestellt für Die parallele Ausführung von shell-Prozessen. Finden Sie, dass die Lösung für eine Erklärung von, wie die Datei Verriegelung arbeitet.
1>nul 2>nul timeout 1
statt ping/nobreak
option. Allerdings TIMEOUT ist nicht verfügbar für XP, und das hatte einen signifikanten Marktanteil bei dieser Antwort wurde geschrieben. Zum Glück, XP wird immer weniger und weniger weit verbreitet ist, dass es jetzt nicht mehr unterstützt.1>nul 2>nul ping /n 2 ::1
Was bedeutet die::1
tun?Hatte ich das gleiche dilemma. Hier ist die Art, wie ich dieses Problem gelöst.
Ich verwendet den Befehl Tasklist, um zu überwachen, ob der Prozess noch läuft oder nicht:
Müssen Sie zwicken die
<AAA>, <BBB>, <CCC>
Werte in das Skript, so dass es richtig zu filtern, die für Ihren Prozess.
Hoffe, das hilft.
Erstellen Sie einen master.bat-Datei, startet eine.Fledermaus und zwei.bat. Wenn man.Fledermaus und zwei.bat Ende, richtig, Sie echo-Datei, die Sie abgeschlossen haben
Dann den master.Fledermaus warten auf die Existenz der beiden Dateien
Andere Möglichkeit ist, zu versuchen, mit dem /WAIT flag
aber Sie haben keine Kontrolle auf Fehler.
Hier einige Referenzen
http://malektips.com/xp_dos_0002.html
http://ss64.com/nt/sleep.html
http://ss64.com/nt/start.html
start /WAIT xxx
wartet xxx beenden lassen, bevor die Ausführung übergeben, um die nächste Zeile in der batch-Datei. Soone.bat
würde zu beenden, bevortwo.bat
könnte sogar zu starten. Man KÖNNTE davon ausgehen, dassone.bat
wird immer als Erster über die Ziellinie und verwendenstart /wait two.bat
, aber das ist schon eine Vermutung. BTW, du musst nichtstart four.bat
könnte man einfachcall four.bat
(oder noch lassen Sie diecall
wenn nichts anderes gemacht werden, nachdem die Ausführungfour.bat
) und speichern Sie den Speicher, der verwendet werden würde durch die Einführung eines anderen Befehls-Prozessor.