ich habe schon öfter folgendes Problem gehabt: Ein Batch-File – unter Windows 98 gestartet – soll gemischt Windows-Programme und dann wieder DOS-Programme erledigen. Ein vereinfachtes Beispiel.bat:
test.exe
copy C:\1\xyz C:\2\xyz
Das test.exe sei ein Windows-Programm, welches das File xyz im Verzeichnis C:\1 erzeugt. In der nächsten Zeile des Batch-Files soll dieses xyz noch in ein weiteres Verzeichnis kopiert werden. Dummerweise wartet Windows anscheinend nicht strikt ab, bis das Windowsprogramm fertig ist, sondern macht den zweiten Schritt vor dem ersten, so dass i. a. ein älteres File xyz kopiert wird.
Im Moment kann ich das lediglich dadurch vermeiden, indem ich zwischen beide Zeilen ein PAUSE einfüge, dann muss das System auf den Tastendruck warten, bevor dier Kopiervorgang gestartet wird. Doch etwas Automatisches gibt es nicht?
Hallo Dieter,
ich habe gerade mal ‚help‘ getippt und ‚Start‘ gefunden.
Zum Abtippen ein wenig zu viel Text, aber das steht u.a. ‚/wait - wartet bis das Programm ausgeführt ist‘ …
Gruß, Rainer
danke, aber ich finde im Internet weder Start noch Wait als Befehl. Wenn ich bei mir in der DOS-Box help tippe, kommt auch nur die Meldung, dass der Befehl nicht gefunden wurde. Bei mir wird halt nur das Windows-übliche DOS installiert sein, aber kein Explizites.
danke, aber ich finde im Internet weder Start noch Wait als
Befehl. Wenn ich bei mir in der DOS-Box help tippe, kommt auch
nur die Meldung, dass der Befehl nicht gefunden wurde. Bei mir
wird halt nur das Windows-übliche DOS installiert sein, aber
kein Explizites.
sorry, da hab’ ich nicht aufgepasst.
Für W2k oder XP hätte ich Dir nämlich einfach meine cmd.ece gemailt. (W2k-Server)
Der Befehl Start scheint aber auch bei Dir verfügbar zu sein.
Sieh mal hier … http://www.dibaro-online.de/index.htm?dos.htm
… da sind auch die Parameter beschrieben.
Versuch doch einfach mal …
Start „DeinProgramm.exe“ /wait
… schlimmstenfalls bekommst du eine Fehlermeldung und es passiert nichts.
danke, es geht schon was mit Deinem Tipp. Allerdings meldet mir die Windows-Applikation (ist ein C-Compiler): ‚Duplicate filename on command line‘. Er interpretiert anscheinend das /wait als Attribut bzw. als zu compilierendes File.
danke, es geht schon was mit Deinem Tipp. Allerdings meldet
mir die Windows-Applikation (ist ein C-Compiler): ‚Duplicate
filename on command line‘. Er interpretiert anscheinend das
/wait als Attribut bzw. als zu compilierendes File.
äähhhmmmmm, C-Compiler ?!? Ging’s nicht um ein Batchfile?
C/C++ kann ich leider gar nicht. ;-( Ich bin bei VB6 stecken geblieben. Da würde ich das Problem allerdings gaaaanz anders lösen.
Da kann man ja auch eine andere Anwendung starten. (Shell …) … Leider auch asynchron. Um da dann zu prüfen, ob die Anwendung noch läuft, verwendet man die Windows-API. … Zu dem Thema steht im Brett VB gerade noch ein aktueller Beitrag mir genauer Erklärung. …
äähhhmmmmm, C-Compiler ?!? Ging’s nicht um ein Batchfile?
Doch, es geht um ein DOS-Batchfile, aber die Windows-Applikation (wie in meinem allerersten Posting mit test.exe bezeichnet) ist eben dieser C-Compiler. Und dieser soll über das Batchfile aufgerufen werden, damit er ein HEX-File generiert, welches dann im nächsten Batch-Befehl nochmals irgendwohin kopiert wird.
Ich vermute auch, dass es mit DOS-Tricks nicht zu lösen ist, außer eben dadurch, dass ich zwischen beide Batch-Zeilen ein PAUSE einfüge, damit wird das System gezwungen zu warten.
danke, es geht schon was mit Deinem Tipp. Allerdings meldet
mir die Windows-Applikation (ist ein C-Compiler): ‚Duplicate
filename on command line‘. Er interpretiert anscheinend das
/wait als Attribut bzw. als zu compilierendes File.
Hast Du mal versucht das /WAIT vor das Programm zu setzen?
danke, es geht schon was mit Deinem Tipp. Allerdings meldet
mir die Windows-Applikation (ist ein C-Compiler): ‚Duplicate
filename on command line‘. Er interpretiert anscheinend das
/wait als Attribut bzw. als zu compilierendes File.
Also ich weiß ja nicht, aber wäre eine Makefile (GNU-Make) nicht angebrachter? Die können genauso Befehle wie Batch-Dateien ausführen wie z.B. Ordner anlegen oder sich rekursiv gegenseitig aufrufen.
Doch, es geht um ein DOS-Batchfile, aber die
Windows-Applikation (wie in meinem allerersten Posting mit
test.exe bezeichnet) ist eben dieser C-Compiler. Und dieser
soll über das Batchfile aufgerufen werden, damit er ein
HEX-File generiert, welches dann im nächsten Batch-Befehl
nochmals irgendwohin kopiert wird.
Ja, jetzt versteh ich’s. Das wait wird als Parameter an das Programm übergeben und das hängt sich daran auf. … Ich probier nachher noch ein wenig.
Ich vermute auch, dass es mit DOS-Tricks nicht zu lösen ist,
außer eben dadurch, dass ich zwischen beide Batch-Zeilen ein
PAUSE einfüge, damit wird das System gezwungen zu warten.
Das würde mir auch nicht gefallen. Entweder bremst das zu lange oder der Rechner ist zu schnell und es funktioniert nicht …