Batchdateinen Ende Abwarten / Ausgabe bewerten

Gast #4837212
Lesenswert?
• ▲
▼
Hallo zusammen,

ich starte in einer Batchdatei mehrere andere Batchabläufe gleichzeitg 
(start "" ...).

Jetzt brauche ich noch eine Möglichkeit herrauszufinden, wann alle 
Abläufe fertig sind und möchte diese noch auf Fehler untersuchen. D.h. 
ich müsste die Ausgabe der Batchprozesse untersuchen. Die einzige Idee, 
welche mir einfällt wäre, die Ausgabe in eine Datei umzuleiten und diese 
zu untersuchen.

Hat jemand eine Idee?

Dank und Gruß
Gast #4837215
Lesenswert?
• ▲
▼
Sit schrieb:
> Hat jemand eine Idee?

ja, eine andere Sprache verwenden.

vermutlich geht es z.b. mit der PowerShell. Ich würde es auf die 
schnelle mit Perl machen.

einfach die Batch in extra Threads starten und dann das Ergebnis 
auswerten.

Gleichzeit und Batch passt halt nicht wirklich gut zusammen.
Gast #4838585
Lesenswert?
• ▲
▼
Jetzt weiß ich auch, warum man heutzutage Quad Core CPUs braucht.
Ein Core wird durch Windows Update ausgelastet, der zweite durch
den Virenscanner und der dritte dann durch solche Batch Files...
#4838633
Lesenswert?
• ▲
▼
Peter II schrieb:
> Christian R. schrieb:
>> wenn
>> der Freitags 14 Uhr von der IT losgelassen wird, legt der alle
>> vorhandenen Cores lahm, vor allem wenn man einen Rechner mit HDD hat.
>
> Wenn es nur eine HDD ist, dann sind die cores weniger belastet als bei
> einer SSD.

Nee, bei uns eben nicht, das ist das zweite wunderliche dran. Bei den 
SSD Rechnern kann man nebenbei noch arbeiten, bei den HDD Rechnern kann 
man sofort nach Hause gehen.
Ich denk dann immer an John McAffee und seine Vollmeise, da muss man 
sich auch über die Software nicht mehr wundern.
Gast #4838635
Lesenswert?
• ▲
▼
Christian R. schrieb:
> Nee, bei uns eben nicht, das ist das zweite wunderliche dran. Bei den
> SSD Rechnern kann man nebenbei noch arbeiten, bei den HDD Rechnern kann
> man sofort nach Hause gehen.

das ist logisch - hängt aber nicht mit der CPU zusammen. die CPU ist 
nicht ausgelastet - aber es gibt keine IO-Reserven.
Gast #4838799
Lesenswert?
• ▲
▼
Dirk D. schrieb:
> in der bash gibt's dafür wait, ich glaube in batch gibt's da nichts
> passende.

es gibt viele unix Tools auch für Windows. Im netzt findet sich auch 
eine sleep.exe, damit kann man ohne CPU-zeit warten.

Aber meist es schneller, es gleich in einer "richtigen" Sprache zu 
machen.
#4838804
Lesenswert?
• ▲
▼
Peter II schrieb:
> Dirk D. schrieb:
>> in der bash gibt's dafür wait, ich glaube in batch gibt's da nichts
>> passende.
>
> es gibt viele unix Tools auch für Windows. Im netzt findet sich auch
> eine sleep.exe, damit kann man ohne CPU-zeit warten.
>
> Aber meist es schneller, es gleich in einer "richtigen" Sprache zu
> machen.

wait und sleep sind völlig unterschiedliche dinge.
sleep wartet eine vorgegebene zeit.
wait wartet bis Hintergrund-Prozesse beendet sind.

Wait gibt es bestimmt auch für windows, es wird aber wahrscheinlich nur 
in einer passenden umgebung, z.B. cygwin, laufen.

Ich bin ja der Meinung das es oft schneller geht wenn man die 
vorhandenen Tools nutzt statt ständig das Rad neu zu erfinden.
Gast #4838809
Lesenswert?
• ▲
▼
Dirk D. schrieb:
> Ich bin ja der Meinung das es oft schneller geht wenn man die
> vorhandenen Tools nutzt statt ständig das Rad neu zu erfinden.

aber oft passt ein 26" Rad nicht in einen 26" Rahmen.
wenn es alles schon fertig geben würde, könnte man alle 
Programmiersprachen abschaffen.
#4839778
Lesenswert?
• ▲
▼
Peter II schrieb:
> Dirk D. schrieb:
>> Ich bin ja der Meinung das es oft schneller geht wenn man die
>> vorhandenen Tools nutzt statt ständig das Rad neu zu erfinden.
>
> aber oft passt ein 26" Rad nicht in einen 26" Rahmen.
> wenn es alles schon fertig geben würde, könnte man alle
> Programmiersprachen abschaffen.

Dann erzähl mal, wie du in einer Batchdatei ein eigenes wait 
implementieren willst.
Oder, um wieder die Analogie mit dem Rad zu bemühen: Wenn du gar keinen 
Rahmen hast, bringt dir das Rad auch nix.
#4839997
Lesenswert?
• ▲
▼
Ich würde nen Python-Interpreter (oder wahlweise irgend ne andere 
komfortable Scriptsprache der eigenen Vorliebe entsprechend) 
installieren.

Das mache ich persönlich auf allen Rechnern auf denen mal so eine 
Notwendigkeit erwächst ohne auch nur eine Sekunde lang zu zögern, denn 
das frisst kein Brot und man kann damit bei Bedarf alles mögliche 
scripten. Das ist ungefähr so wie bei Muttern im Haus irgendwo ne kleine 
Werkzeugkiste zu deponieren, wenn man irgendwann später "mal schnell" ne 
Zange braucht oder nen Kreuzschlitz hat man sofort das Nötigste zur Hand 
ohne umständlich mit ungeeigneten Tools (Küchenmesser, cmd.exe, 
Tesafilm, Geflügelschere, etc.) improvisieren zu müssen 
(Verletzungsgefahr!).
#4841657
Lesenswert?
• ▲
▼
Also wenn es nur um das Feststellen des Endes der Batches geht, dann 
kann man mit tasklist feststellen, ob die Batchfenster alle noch da 
sind, bzw. wann alle beendet sind.
Beispiel:

rem Starten eines neuen Fensters, welches den pause-Befehl ausführt,
rem und den Titel "mein-CMD - pause" trägt
start "mein-CMD" pause

rem dann mit tasklist (in einer Schleife) abfragen
tasklist /FI "windowtitle eq mein-CMD - pause"|find "cmd.exe"

Das Find ist am Ende nötig, da tasklist selbst keinen auswertbaren 
Errorlevel zurückliefert (immer 0), während find eine 1 liefert, wenn 
nichts gefunden (sonst 0).
Das funktioniert dann auch mit einem ganzen Bündel an gleichzeitig 
gestarteten Batches bzw. Kommandos.

Und was die Untersuchung auf Fehler angeht: die meisten Kommandos geben 
einen RC zurück, welcher ja via %errorlevel% abfragbar ist. damit kann 
man ja den Fehlerstatus jedes einzelnen Kommandos im Batch abfragen, und 
entsprechend darauf reagieren. Z.B. eine Ausgabe in ein Logfile machen, 
z.B 0 im Erfolgsfalle, 1 im Fehlerfalle, oder bestimmte Strings, welche 
man dann zusätzlich noch im Haupt-Batch auswerten lassen könnte.
Wenn man aber Details über einen Fehler haben will, ist es natürlich 
immer günstig, den Output in ein File umzuleiten, damit man auch eine 
Fehleranalyse machen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren