![]() |
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 |
AW: Konsolenausgabe auslesen von bat Datei
Zitat:
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. |
AW: Konsolenausgabe auslesen von bat Datei
Also mit name Pipes hab ich schonmal was gelesen. Aber noch nie damit gearbeitet geschweie den verstanden.
|
AW: Konsolenausgabe auslesen von bat Datei
|
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. |
AW: Konsolenausgabe auslesen von bat Datei
Das könnte sein was du suchst:
![]() Im Delphi-Forum geistert irgendwo auch eine D2009-Variante davon rum falls du die brauchst ;-) EDIT: Hier die 2009er-Version: ![]() |
AW: Konsolenausgabe auslesen von bat Datei
Zitat:
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. |
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. |
AW: Konsolenausgabe auslesen von bat Datei
Hmm, irgendwie hast du meine Fragen sehr elegant umschifft.
|
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.
|
AW: Konsolenausgabe auslesen von bat Datei
wenn es nur ein einzelner Aufruf ist, könnte auch eine Umleitung in eine Textdatei reichen:
xyz.exe %parameter > Ausgabe.txt |
AW: Konsolenausgabe auslesen von bat Datei
du könntest allen beteiligten sehr hilfreich sein, indem du einfach mal den Inhalt deiner ominösen .bat-Datei preisgibst. Dann wissen wir auch alle, was mit Java(TM) gemeint ist und woher die ECHOs kommen.
Bernhard |
AW: Konsolenausgabe auslesen von bat Datei
hmm okay... die bat datei ist halt von einem spiel:
Code:
Obwohl ich wenig glaube das das hilft...
@echo off
java -Xms512M -Xmx512M -cp minecraft-server.jar com.mojang.minecraft.server.MinecraftServer pause Die Bat datei liegt zusammen mit der jar datei in dme gleichem verzeichnis |
AW: Konsolenausgabe auslesen von bat Datei
dann nimm doch mal den Java-Befehl als Maß der Dinge oder lass das pause weg. Sonst beendet sich der Prozess nicht rechtzeitig (der Code aus SwissDelphiCenter wartet nämlich artig darauf, dass sich der Prozess beendet).
Bernhard |
AW: Konsolenausgabe auslesen von bat Datei
Zitat:
|
AW: Konsolenausgabe auslesen von bat Datei
java.exe sollte normalerweise im Suchpfad liegen (%PATH%), weil ja die CMD Java auch finden kann (und da bin ich mir sicher, dass hier keine Reg-Schlüssel ausgewertet werden).
Bernhard |
AW: Konsolenausgabe auslesen von bat Datei
Liste der Anhänge anzeigen (Anzahl: 1)
nene funkt net....
also das hab ich schon alles versucht der pfad ist C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server\start server.bat
Code:
Konsole beendet..keine ausgabe (dauert nur ein paar sekunden)
RunCaptured('C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server','java','-Xms512M -Xmx512M -cp minecraft-server.jar com.mojang.minecraft.server.MinecraftServer');
Code:
funkt nicht...keine ausgabe
RunCaptured('C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server','','start server.bat');
Code:
geht auch nicht gleiche wie eins unten...
RunCaptured('C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server','cmd','start server.bat');
Code:
geht überhaupt nicht....falsche ausgabe nur vezeichnis..das wars
RunCaptured('C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server','cmd','java -Xms512M -Xmx512M -cp minecraft-server.jar com.mojang.minecraft.server.MinecraftServer');
pause rausnehmen kein unterschied...im anhang die normale ausgabe : das fenster bleibt offen, da es ja eine server anwendung ist. also ich bin mit meinem latein am ende. auch bei der SetPriorityClass Prozedur stat IDLE_PRIORITY_CLASS,CREATE_NEW_CONSOLE macht keine unterschied bei keinem. Ich vermute das es aus irgendeinem grund an der jar liegt, das die nur per bat ausführbar ist. |
AW: Konsolenausgabe auslesen von bat Datei
Es wäre schön, wenn du einfach mal das machen würdest, was wir schreiben ;)
Und hier hat niemand "cmd" oder "java" geschrieben. Auch beim SwissDelphiCenter ist das Beispiel mit cmd.exe und ich habe auch ganz klar java.exe geschrieben. Wenn das bei ShellExecute und ShellExecuteEx geht, ist das ja ne feine Sache, aber man mag es kaum glauben, CreateProcess gehorcht anderen Regeln. Ach ja und: "geht nicht" ist keine gute Ansage, wenn man möchte, daß einem geholfen wird. Gerade als Entwickler solltest du vielleicht das beherzigen, was wir Entwickler gern den Benutzern ans Herz legen - ![]() Nachtrag: übrigens hatte ich dich auch gebeten java.exe auszuführen und nicht "java" als Befehl innerhalb cmd (bzw. cmd.exe), was nämlich ohnehin /c oder /k erfordern würde.
Delphi-Quellcode:
RunCaptured('C:\Dokumente und Einstellungen\Mario\Eigene Dateien\minecraft-server','java.exe','-Xms512M -Xmx512M -cp minecraft-server.jar com.mojang.minecraft.server.MinecraftServer');
|
AW: Konsolenausgabe auslesen von bat Datei
also ich bin jetzt net so blöd, aber ich weis das windows cmd und java (beide in java.exe oder cmd.exe umwandelt)
Zumindest bei cmd.. Und auserdem hat dies kein unterschied gemacht....... Ich glaube ich lass des lieber mit selbst programmieren, weil es scheint das keiner hier eine antwort darauf hat und es mir solangsam zudumm ist. Damit schlisse ich das einfach und lass es sein. Ich such mir eine Komponente die das macht. Dachte das geht einfacher. Aber anscheint liegt es an der verschriekung von der jar datei. Ich denk das wird nicht umsonst mit dem Commandos mit einer Bat datei ausgeführt. Oder was meint ihr? Von daher geb ichs auf. Es bringt nichts darumzumachen, da es bei mir anscheinend ein spezieller Fall ist. |
AW: Konsolenausgabe auslesen von bat Datei
Zitat:
![]() |
AW: Konsolenausgabe auslesen von bat Datei
Okay...sorry andreas du hast recht...
Die Komponente funkt soweit das sie was ausspuckt womit ich die Komponente für meine Zwecke weitermachen kann. Hab nur gedacht, naja Delphi 5 ne oder? son alter mist? Wenn ich nun aber mit AnsiStrings arbeite und auch die Ansi-Funktionen nehme startet er es und bekomm soagr ne ausgabe xD *freu* EDIT: Habe es geschafft mit der Komponente. Es lag wenn ich das jetzt mal so anguge an den Strings. Vermutlich nihmt er keine Unicode an nur Ansi... Mit der Funktion funkt es nicht. Die Komponente funkt. Ka warum..aber es geht xD...So damit entlich beendet und beantwortet nach langem |
AW: Konsolenausgabe auslesen von bat Datei
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz