Chronologische Stapelverarbeitung in DOS

Hallo,

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?

Gruß

Dieter

Hallo Dieter,
ich habe gerade mal ‚help‘ getippt und ‚Start‘ gefunden. :wink:
Zum Abtippen ein wenig zu viel Text, aber das steht u.a. ‚/wait - wartet bis das Programm ausgeführt ist‘ …
Gruß, Rainer

Hallo 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.

Gruß

Dieter

Hallo Dieter,

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.

Dann verrate doch mal Dein BS. :wink:

Gruß, Rainer

Hallo Rainer,

Dann verrate doch mal Dein BS. :wink:

siehe ganz oben: Windows 98.

Gruß

Dieter

Hi Dieter,

siehe ganz oben: Windows 98.

sorry, da hab’ ich nicht aufgepasst. :wink:
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.

Gruß, Rainer

Hallo Rainer,

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.

Gruß

Dieter

Hallo Dieter,

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. …

Gruß, Rainer

Hallo Rainer,

ää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.

Gruß

Dieter

Hallo Dieter,

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?

Start /wait „DeinProgramm.exe“

Gruß
Christian

Hallo,

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.

bye
Christoph

Hallo Dieter,

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. :wink: 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 …

Wie wär’s mit nem VB- oder C-Programm statt DOS?

Gruß, Rainer

Erfolgreich
Hallo Christian,

Hast Du mal versucht das /WAIT vor das Programm zu setzen?

Start /wait „DeinProgramm.exe“

vielen Dank, der Tipp hat den Erfolg gebracht. Man lernt nie aus.

Viele Grüße

Dieter

Erledigt, danke!
.