Weiß jemand, ob es ein Cmd-Skript gibt, das dies tut, und / oder ein Befehlszeilenprogramm, das für den Job bereit ist?
14
Weiß jemand, ob es ein Cmd-Skript gibt, das dies tut, und / oder ein Befehlszeilenprogramm, das für den Job bereit ist?
Antworten:
Erstellen Sie die drei folgenden Batchdateien. Main.bat startet 1.bat und 2.bat
1.bat und 2.bat schreiben temporäre Dateien aus, nach denen main.bat sucht. Während 1.bat und 2.bat arbeiten, meldet main.bat, dass die Verarbeitung noch stattfindet. Wenn Sie im geöffneten Fenster von 1.bat oder 2.bat die Eingabetaste drücken, wird die temporäre Datei gelöscht und das Programm beendet. Dies simuliert das Stoppen der Verarbeitung für diese .bat-Datei. Wenn Sie dies sowohl für 1 als auch für 2.bat tun, meldet Ihnen main.bat, dass die Verarbeitung für diese Prozesse abgeschlossen ist. Sie können 1.bat und 2.bat dazu bringen, alles zu tun, was Sie wollen, solange Sie die temporäre Datei löschen, wenn Sie fertig sind. An diesem Punkt kann main.bat alles tun, was Sie wollen.
1. Fledermaus
2. Fledermaus
main.bat
quelle
Einfach genug, vorausgesetzt, die Prozesse benötigen keine Standardeingabe oder -ausgabe. Über die Befehlszeile oder in einer Batchdatei:
Dadurch werden alle vier Prozesse gleichzeitig ausgeführt und erst dann zurückgegeben, wenn alle beendet wurden. (Mögliche Ausnahme: Wenn ein Prozess die Standardausgabe explizit schließt, wird er möglicherweise so behandelt, als wäre er beendet worden. Aber das ist ungewöhnlich, nur sehr wenige Prozesse tun dies.)
Ich bin mir nicht sicher, wie viele Prozesse Sie auf diese Weise gleichzeitig starten können. Ich habe bis zu zehn ausprobiert.
quelle
Die einzige Möglichkeit, dies zu tun, besteht darin, separate Batchdateien (siehe
start /?
) zu starten , in denen die einzelne Aufgabe ausgeführt wird, und nach Abschluss eine Textdatei zu schreiben. Anschließend überprüfen Sie regelmäßig, ob die Textdateien erstellt wurden.quelle
Sie können sich das Cmdlet Powershell Start-Job ansehen. Es sollte Ihnen erlauben, dies zu tun. Mehr hier Powershell ist die Shell von Microsoft. Es ist viel leistungsfähiger als Cmd-Skripte und belastet die Investition Ihrer Zeit
quelle
Oder Sie können dies verwenden: http://www.out-web.net/?p=167
Ich habe es getan, es funktioniert, aber es kommt manchmal vor, dass die PID des fertigen Prozesses sofort von einem anderen Windows-Prozess wiederverwendet wird, der gerade gestartet wurde, und es macht die Erkennung des Endes Ihres Prozesses gefährlich / fehlerhaft.
quelle
Ich suchte auch nach einer ähnlichen Aufgabe. Ziel war es, mehrere Befehle parallel auszuführen und die Ausgabe (stdout & error) aller parallelen Prozesse zu extrahieren. Warten Sie dann, bis alle parallelen Prozesse abgeschlossen sind, und führen Sie einen weiteren Befehl aus. Es folgt ein Beispielcode für eine BAT-Datei, die in CMD ausgeführt werden kann:
( start "" /B cmd /c ping localhost -n 6 ^>nul timeout /t 5 /nobreak start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1 start "" /B cmd /c ping localhost -n 11 ^>nul timeout /t 10 /nobreak ) | pause Echo waited timeout /t 12 /nobreak
Alle darin enthaltenen Anweisungen
()
werden zuerst ausgeführt, warten Sie, bis sie abgeschlossen sind, und dann werden die letzten beiden Zeilen ausgeführt. Alle Befehle, die mit beginnen,start
werden gleichzeitig ausgeführt.Diese Links sind hilfreich: /programming//a/43762349/9689416 und https://ss64.com/nt/start.html
quelle