Ich versuche, ein Skript zu erstellen, um beim Herunterfahren eine exe auszuführen, um sp1 zu installieren. mein script geht so ähnlich (nicht aktuelles bat script).
If installed GOTO END
Install.exe
END:
Mein Problem ist, dass, wenn es ausgeführt wird, es das Installationsprogramm startet, dann das Skript beendet, weil das Installationsprogramm einen anderen Prozess ausführt, und anschließend den Installationsprozess herunterfährt, weil der Computer herunterfährt und das System herunterfährt (zumindest denke ich, dass dies so ist es tut.)
Gibt es eine Möglichkeit, es anzuweisen, zu warten, bis der Prozess, den es gestartet hat, abgeschlossen und dann heruntergefahren ist?
windows
batch-file
executable
Kravlin
quelle
quelle
like start /wait install; exit
?cmd /C start /wait install
Ein kürzerer Weg:
Ebenfalls
könnte verwendet werden, aber mit der Zeit werden Sie in der Lage sein, einige Konsolenausgaben abzufangen. Und das ist der Grund, warum es funktioniert - der Pipe-Befehl wartet auf Eingaben, bis die EXE-Datei fertig ist
quelle
<
,>
,>>
,&
,&&
,||
,|
)Entweder ruft man die Exe direkt aus der Batch-Datei auf oder verwendet
start /wait
sie, aber es gibt eine Einschränkung.Wenn die aufgerufene Exe einen anderen Prozess erstellt, z. B. das Aufrufen einer anderen Exe, und die Batchdatei dann beendet wird, wird die Verarbeitung fortgesetzt, nachdem die aufgerufene Exe beendet wurde, da sie keine Kenntnis von anderen von ihr gestarteten Prozessen hat.
In Ihrem Fall ist dies ein echtes Problem, da Installationsprogramme normalerweise Dateien aus einer Form von komprimierten Containern extrahieren, die möglicherweise in der EXE-Datei selbst eingebettet sind, dann eine der extrahierten Dateien abfeuern und beenden. Einige Installationsprogramme stellen Befehlszeilenparameter zur Verfügung, mit denen die ursprüngliche Exe angewiesen wird, erst zu beenden, wenn die gesamte Installation abgeschlossen ist. Davon abgesehen gibt es keinen wirklichen Weg, dies mit Batch-Dateien alleine zu umgehen, und es wäre eine programmatische Lösung erforderlich, um dies zu lösen.
quelle
msiexec
oft auch andere Prozesse aus , nur um die Sache noch komplizierter zu machen . :(start /wait
überhaupt? Ich selbst war der Meinung, dass es notwendig ist,start /wait
Batch-Dateien zu blockieren, bis die GUI-Anwendung (im Gegensatz zu einer Konsole) beendet ist. Wenn ich es jetzt teste, sehe ich, dass Batch-Dateien sogar auf GUI-Anwendungen warten. Ich habe die entsprechende Frage gestellt: Warum blockiert die GUI-Anwendung eine Batch-Datei?Hier ist ein Beispiel mit MATLAB! Ich bin davon ausgegangen, dass die Pfadeinrichtung für MATLAB abgeschlossen ist und der MATLAB-Exit durch die Datei FileName.m sichergestellt wird (oder der Benutzer dies intern angegeben hat).
quelle
Ich hatte das problem bei john gardeniers gehabt oder beschrieben, wo meine exe eine andere exe gerufen und gekündigt hat, dafür start / wait hat nicht funktioniert. Ich habe eine "while-Schleife" erstellt, um zu überprüfen, ob sie ausgeführt wird, und um dann fortzufahren, sobald sie fertig ist. Die Zeiten können an Ihre Bedürfnisse angepasst werden.
quelle
Sie können den Befehl start / wait verwenden. Dies startet eine Anwendung und wartet darauf, dass sie beendet wird.
Wenn Sie wissen, wie lange die Ausführung dauert, können Sie sich den Befehl sleep ansehen, der von den Windows Server 2003 Resource Kit-Tools bereitgestellt wird . Sleep.exe kann verwendet werden, um den Batch für eine beliebige Anzahl von Sekunden anzuhalten, damit das Programm vollständig installiert werden kann, bevor die Batchdatei mit der Installation anderer Komponenten fortfährt. Es gibt einige Programme, die die "start / wait" -Syntax ignorieren, da das Programm selbst einen anderen Prozess startet. Dann ist die sleep.exe sehr nützlich.
quelle