Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Konsolenausgabe auslesen von bat Datei (https://www.delphipraxis.net/155517-konsolenausgabe-auslesen-von-bat-datei.html)

NickelM 26. Okt 2010 21:01

Konsolenausgabe auslesen von bat Datei
 
Hallo zusammen,

Ich hab mal ne frage ob es die möglichkeit gibt den Konsolenoutput von einer Bat Datei auszulesen bzw. zu kopieren?

Folgender Hintergrund:

Die Bat datei führt eine Jar Datei mit Parametern aus.
Die Jar Anwendung stellt einen Server da. (Jar Datei habe ich net geschrieben auch net die Bat)
Wenn der Server nun einen Fehler rausschmeist und "down" geht, bleibt die Console offen und Server bleibt down.
Jetzt wollte ich eine Konsolenanwendung schreiben, die dne Fehler ode abfängt und ihn sich merkt und dne Server neustartet.
Sozusagen er startet die Bat datei (das hab ich schon hinbekommmen xD lol) soll dan warten auf einen Fehler, server neustarten und dan wieder auf Fehler warten usw.

Geht überhaupt sowas? also mit WaitforIdleInput (oder sowas) klappt es schonmal nicht. Und WaitForSingelObject geht nur wenn die Console geschlossen wird xD

Assarbad 26. Okt 2010 21:06

AW: Konsolenausgabe auslesen von bat Datei
 
Zitat:

Zitat von NickelM (Beitrag 1057971)
Ich hab mal ne frage ob es die möglichkeit gibt den Konsolenoutput von einer Bat Datei auszulesen bzw. zu kopieren?

Das kommt drauf an. Wenn du mit CreateProcess (et al.) die BAT-Datei ausführst (also implizit via cmd.exe), kannst du bei der Prozesserstellung Pipes anstelle der Standardein-/ausgabekanäle angeben. Und von denen kann man natürlich lesen was ansonsten auf der Konsole landen würde.

Aus meiner Delphi-Zeit von vor 2006 erinnere ich mich aber an Komponenten die versprachen das ranpappen der Pipes und die Prozesserstellung stark zu erleichtern. Vielleicht kann dir da jemand anderes einen Tip geben.

NickelM 26. Okt 2010 21:17

AW: Konsolenausgabe auslesen von bat Datei
 
Also mit name Pipes hab ich schonmal was gelesen. Aber noch nie damit gearbeitet geschweie den verstanden.

rollstuhlfahrer 26. Okt 2010 21:22

AW: Konsolenausgabe auslesen von bat Datei
 
also für den Anfang hab ich mal einen Tipp, der bestimmt hilft: hier

Bernhard

NickelM 27. Okt 2010 05:04

AW: Konsolenausgabe auslesen von bat Datei
 
Naja, der Code ist Cool..nur aus unerklärlichzen gründen funkt sie net mit der Bat datei. Es starten kein output...habs normal versucht zustarten geht...im hintergrund die java anwendung starten aber es kommt garkeine Konsolenoutput von der bat datei. Es wird auch nichts aufgezeichnet...nichts...

EDIT: Okay scheint an der bat datei zuliegen...der direkter output der bat wird angezeigt. Das Problem ist, beim normalen ausführen wird in der Console das angezeit was sozusagen die Java Datei ausspukt...aber die sache direkt über java zulaufen funkt auch nicht...das gleiche mit der client bat (vllt das es an dem server liegt) nein auch nicht...der output der jar datei wird nicht ausgeben...
Falls es jemand kennt, es geht um einen Minecraft Server.

Andreas L. 27. Okt 2010 09:57

AW: Konsolenausgabe auslesen von bat Datei
 
Das könnte sein was du suchst: http://maxxdelphisite.free.fr/doscmd.htm

Im Delphi-Forum geistert irgendwo auch eine D2009-Variante davon rum falls du die brauchst ;-)

EDIT: Hier die 2009er-Version: http://www.delphiforum.de/viewtopic.php?p=556365#556365

Assarbad 27. Okt 2010 09:59

AW: Konsolenausgabe auslesen von bat Datei
 
Zitat:

Zitat von NickelM (Beitrag 1058026)
EDIT: Okay scheint an der bat datei zuliegen...der direkter output der bat wird angezeigt. Das Problem ist, beim normalen ausführen wird in der Console das angezeit was sozusagen die Java Datei ausspukt...aber die sache direkt über java zulaufen funkt auch nicht...das gleiche mit der client bat (vllt das es an dem server liegt) nein auch nicht...der output der jar datei wird nicht ausgeben...

Ich hatte ernste Probleme das zu parsen. Muß wohl mal meinen Deutsch-Sprachprozessor überprüfen lassen.

Die Frage wäre dann jetzt wie das Java-Programm gestartet wird. Per start/cmd.exe? Also in einer anderen Konsole? Oder in der gleichen Konsole? Denn eins ist klar, mit der o.g. Methode kannst du nur innerhalb der von dir gestarteten Konsole Ausgaben abfangen und Eingaben tätigen.

NickelM 27. Okt 2010 10:20

AW: Konsolenausgabe auslesen von bat Datei
 
hab ich auch schon gemerkt...wenn ich den Client starte, da wo ein paar echo ausgaben sind, die werden aufgefangen.

Also.. Die Bat datei führt eine Jar Datei mit Commandline aus. Da es Bat ist, wird diese ja in der cmd.exe ausgeführt.
Beim Server bekomm ich halt infos ob alles hochgefahren ist usw.

Wenn ich nun mit der Prozedur die Bat datei öffne bekomm ich garkeine Ausgaben, auch nicht nach schliessen der Konsolenanwendung :lol:
In der bat steht echo off. Es werden trotzdem Dinge beim normalen Ausführen in die Konsole geschrieben. Diese muss ich abfangen. Diese kommen vermutlich von der Java.exe. So direkt den Server mit der java.exe mit den gleichen Commands wie die bat datei auszufüren, funkt auch nicht.....

Weis langsam nicht mehr weiter. Ich glaub ich lass es einfach, weil irgendwie komme ich einfach nicht an die Ausgaben.

Assarbad 27. Okt 2010 10:22

AW: Konsolenausgabe auslesen von bat Datei
 
Hmm, irgendwie hast du meine Fragen sehr elegant umschifft.

NickelM 27. Okt 2010 11:24

AW: Konsolenausgabe auslesen von bat Datei
 
hmm..wenn du meinst..erlich gesagt hab ich von createprozess usw nicht viel ahnung. Arbeite sogut wie nie damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz