Batch Programm1 soll warten bis Programm2 vollständig gestartet ist

aggitron

Commander
Registriert
Jan. 2006
Beiträge
2.074
Hallo,

ich starte beim Rechnerstart zwei Programme automatisch per Batch im Autostart.

Die Programme müssen in einer bestimmten Reihenfolge gestartet werden.
Ein Programm ist der MS SQL Server (Programm1). Dieser benötigt zum starten etwas Zeit.
Programmm2 muss nun warten bis Programm1 vollständig gestartet ist. Eine zeitliche Verzögerung alá

Code:
ping 127.0.0.1 -n 60 >nul

möchte ich nicht nutzen, da wir die Programme auf unterschiedlicher Hardware nutzen und die Programme auf der jeweiligen Hardware schnellstmöglich starten sollen.
Das ganze sollte möglichst mit Windows Boardmitteln funktionieren. Als OS wird in der Regel WinXP eingesetzt.
Bin für jeden tipp dankbar.
 
Würde dann im Prinzip ja auch nur ne Zeitverzögerung einarbeiten. Das krieg ich auch mit obiger Zeile im Batch hin.
Der SQL Server (Programm1) wird nicht beendet, so wie in der VBS Beschreibung angenommen.
Er soll einfach nur vollständig gestartet sein bevor Programm2 startet (Programm2 läuft sonst auf Fehler).
 
Hi

sieh dir mal die Doku zu "START" an. ("start /?")

Gruss, Christian.
 
Ich fürchte du musst mich darauf stossen. Ich lese aus der Doku nichts heraus was mich weiter bringen würde. Die Option /WAIT wartet auch nur auf das Ende eines Programmes.
 
Das wird wahrscheinlich auch kaum möglich sein, weil nur das zu startende Programm weiß, wann es denn fertig geladen ist. Und wenn es dir darauf keinen Hinweis gibt, dann kann das OS nicht wissen, wann es bereit ist.
 
Ich muss DerEineDa da zustimmen. Da wird es in dieser Form wohl kaum eine Möglichkeit geben...

Was mich aber ein bisschen wundert, ist, dass ihr den Server per Kommando startet!? Eigentlich ist das doch ein Dienst. Falls ihr den Weg mit dem Kommando nur geht, um sicherzustellen, dass der Server bei Programm2-Start schon fertig ist, würde ich vielleicht mal den "net start ..."-Befehl versuchen, um den Dienst manuell zu starten. Der hat nämlich eine Rückgabe, wenn der Dienst vollständig gestartet wurde mMn. Heißt also, erst wenn der Dienst läuft, wird der net-Befehl beendet. Danach könnte man Programm2 aufrufen. Aber keine Ahnung, ob sich das auf euer Problem anwenden lässt...
 
DerEineDa schrieb:
Das wird wahrscheinlich auch kaum möglich sein, weil nur das zu startende Programm weiß, wann es denn fertig geladen ist.
hier könnte man mit nem kleinen programm so lange dem programm nachrichten schicken, bis es auf die erste nachricht reagiert. der punkt wäre dann, wenn das programm komplett geladen wurde und bereit für eingaben ist.

@ te: erfahrungen mit programmiersprachen (c++, delphi, java, eig egal was) hast du nicht oder?
 
Wenn nichts geht schreib ich ein Programm. Dachte aber das es so schneller geht, zudem sollte es mit Windows Boardmitteln umgesetzt werden.
Dem Lösungsansatz von Gobble-G werde ich nochmal nachgehen.
 
also ich würd auch sagen, dass es mit "einfachen" mitteln nicht funktioniert! denn woher willst du wissen wann das programm geladen ist (also außer es sendet dann i-was odda so)??

denn wennn du sagen würdest es soll prog2 öffnen wenn prog1 offen ist, wird er prog2 öffnen, sobald prog1 sein "ladefenster" offen hat!

ich würde einfach einen counter von (jetz mal geschätzt) 30sekunden!
musst halt vorher mal das prog1 aufmachen und mal gucken wie lang es dauert! dann nochmal 20% differenz odda so drauf und los gehts mitm 2ten programm!

Kompliziertere lösungen gibts bestimmt auch, abba diese is bei weitem die einfachste
 
Zurück
Oben