Dos Console auslesen

Status
Nicht offen für weitere Antworten.
A

add1ct

Gast
hallo,

folgendes problem:

ich habe in java eine .bat datei geschrieben und führe diese aus...
die .bat erstellt mir mit hilfe von "cdimage" ein iso image.
cdimage basiert auf der kommandozeile und bekommt halt seine parameter mit der bat übergeben...

so die kommandozeile wird ja praktisch von java ausgeführt und ist mir damit nicht mehr sichtbar!
das problem is ich muss/will den inhalt des dosfensters(fortschrittsanzeige) mit java auslesen um später eine processbar zu machen.

weiß wer wie man das problem lösen könnte?also das dosfenster auslesen?
 

The_S

Top Contributor
Du startest dein Programm nicht über eine Batch-Datei sondern über die Runtime. Dort holst du dir dann den Process und verwendest dann die gegebenen Streams.
 
A

add1ct

Gast
allet klar,
danke schön!
klappt soweit.muss mich nur noch ein wenig mit dem stream auseinander setzten...

vielen dank bis dann
 
A

add1ct

Gast
so bin bei der sache noch ma auf ein problem gestoßen..
ich bekomm alles ausgelesen außer die fortschrittsanzeige!
er liest praktisch alles aus bis zu dieser hochzählenden zahl... dann kommt nix mehr.
der vorgang das er das image erstellt startet erst wenn ich den lesevorgang stoppe.
habs daraufhin mit threads versucht aber da gabs das gleiche problem...

hat jemand ne lösung bzw ein ansatz?
alternativ könnte man die zeit selber ausrechnen lassen aber das wär nich schick ;p
 

moormaster

Top Contributor
Ich glaube das Problem ist, dass Java nur Zeilenweise von der Konsole lesen kann. D.h. wenn cdimage seinen Status ohne Zeilenumbruchszeichen ausgibt, dann wird dein Programm von den ganzen Statusmeldungen wohl erst zum Schluss erfahren (sobald cdimage wieder eine neue Zeile beginnt oder spätestens, wenn der Prozess endet).

Das kann man nur auf Kosten der Plattformunabhängigkeit umgehen, indem man sich selbst in C++ Methoden schreibt, mit denen man auch von der Konsole lesen kann, noch bevor die Zeile beendet wurde. Habs nur in google gefunden und den Quelltext ein wenig überflogen; sieht aber so aus, als würde es in JLine genau so implementiert worden sein:

http://sourceforge.net/projects/jline/
 
A

add1ct

Gast
hier nochma der code wo es nich weiter geht... :
Code:
BufferedReader in;
String buffer = "";

Process p = Runtime.getRuntime().exec("C:\\CDIMAGE.exe -lWXPFPP_DE -t12/31/2002,12:00:00 -h -j1 -m "  + leselaufwerk + " " + path  + isoname + ".iso" );

in = new BufferedReader(
           new InputStreamReader(p.getInputStream()));

while ((buffer = in.readLine()) != null) {
      System.out.println(buffer);
    }

hab ebn mal dieses jfile ausprobiert aber komm irgendwie auch nich weiter:

ConsoleReader(InputStream in, Writer out)


Code:
ConsoleReader creader;
creader = new ConsoleReader(p.getInputStream(), ???)

wo bekomm ich den writer her?
n ganz normaler geht net...

habs auch mal so probiert
Code:
String out = "";
ConsoleReader creader;
Writer writer;
creader = new ConsoleReader(p.getInputStream(),writer.readline(out));
syso(out);

er will n protected writer....
kein plan wie ichs machen könnte.
 

moormaster

Top Contributor
add1ct hat gesagt.:
hab ebn mal dieses jfile ausprobiert aber komm irgendwie auch nich weiter:

Erstens heisst es jLine und 2. hab ich diese Bibliothek nurt als Beispiel genannt, wie so eine Implementierung in C/C++ aussehen könnte. Wenn du die Dokumentation zu dieser Bibliothek gelesen hättest, wüsstest du, wozu der ConsoleReader dient.

Es handelt sich dabei um eine Klasse, die Benutzereingaben von einem InputStream (meistens direkt von einer nativen Konsole) entgegennimmt und entsprechend verwalten kann. So dass z.B. Befehlsvervollständigung per Tab und eine Liste bereits ausgeführter Befehle geführt werden kann. Diese Klasse kann man natürlich nicht einfach blind an die Ausgabe eines anderen Programms anhängen...

Der writer wird benötigt, damit die Ausgaben auch wieder zu lesen sind (schliesslich soll ein vervollständigter Befehl auch entsprechend angezeigt werden).

Code:
ConsoleReader creader;
creader = new ConsoleReader(p.getInputStream(), ???)

wo bekomm ich den writer her?
n ganz normaler geht net...

definiere "normal"...
Ein Writer stellt lediglich zusätzliche Methoden bereit, um z.B. auf einem OutputStream Daten ausgeben zu können.

habs auch mal so probiert
Code:
String out = "";
ConsoleReader creader;
Writer writer;
creader = new ConsoleReader(p.getInputStream(),writer.readline(out));
syso(out);

einen Writer nur anzulegen und nie zu initialisieren ist genauso sinnfrei, wie der Versuch von einem Writer eine Zeile einzulesen :roll:

Das wird übrigens auch weiter Dein Problem bleiben: solange du readLine benutzt wirst du selbst mit der richtigen nativen Implementierung zum Lesen vom stdin dein Ergebnis erst nach dem Zeilenende bekommen und somit wieder erst, sobald cdimage fertig ist...
 
A

add1ct

Gast
das readline war n schreibfehler.. hatte da .write zu stehen.
naja...danke soweit...
 

moormaster

Top Contributor
Also ich hab da mal ein bisschen herumprobiert und es scheint so, als gäbe es keine Probleme, zeichenweise aus dem stdout eines anderen Programmes zu lesen mit Java. Du darfst eben nur nicht readLine benutzen, sondern musst mit read() jedes Zeichen einzeln auslesen und dann selbst entscheiden, wann du das Lesen abbrichst und erstmal die Information aus dem String liest.

Hier mal der Quellcode von meinem Programm:

Code:
import java.io.*;

public class Test2
{
 public static void main(String[] args)
 {
  try
  {
   Process p = Runtime.getRuntime().exec("testapp.exe");
   InputStreamReader in = new InputStreamReader(p.getInputStream());

   int status = -1;
   
   String tmp = "";
   int chr;
   while ((chr = in.read()) != -1) // lesen bis Stream am Ende
   {
   	if (chr == '\r')
   	{
   	 int tmp_status = Integer.parseInt(tmp);
   	 
   	 if (tmp_status != status)
   	 {
   	  System.out.print("             \r");  // alte Ausgabe überschreiben
   	  System.out.print("Status: " + tmp_status + " %\r");
   	 }
   	 
     status = tmp_status;
     tmp = "";
   	} 
   	else 
     tmp += (char)chr;
   }
  }
  catch (IOException e)
  {
   e.printStackTrace();
  }
 }
}

Und hier der C-Quelltext-Schnipsel von dem Programm, mit dem ich das Java Programm getestet hab:
Code:
#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[])
{
 int delay_s = 30;
 clock_t cl = clock();

 while ((clock()-cl)/CLOCKS_PER_SEC < delay_s)
 {
  printf("%d\r", 100*(clock()-cl)/(delay_s*CLOCKS_PER_SEC));
 }

 return 0;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
F Java Console Allgemeine Java-Themen 2
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
X Console mit Argument öffnen? Allgemeine Java-Themen 10
J Console aufrufen Allgemeine Java-Themen 1
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
Uzi21 Frage zu NetBeans ( Console) Allgemeine Java-Themen 11
S Kommentare in Console Allgemeine Java-Themen 6
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2
M Compilieren auf der COnsole bzw batch Allgemeine Java-Themen 3
nrg Java Observer in SysTray laufen lassen / Console schließen Allgemeine Java-Themen 2
J Java Console in LogDatei schreiben. Allgemeine Java-Themen 6
T JMX Console als Webapplikation Allgemeine Java-Themen 2
J Process auf Console anzeigen lassen. Allgemeine Java-Themen 5
G Batch ohne Console? Allgemeine Java-Themen 6
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
T Löschen der Console Allgemeine Java-Themen 1
E String auf der Console rechtsbündig ausrichten Allgemeine Java-Themen 10
B Console Anwedung mit Rewrite auf ein System.out.println ? Allgemeine Java-Themen 3
G mit javac in Console mehrere java Files compilieren Allgemeine Java-Themen 6
S Einiges zur Java-Console Allgemeine Java-Themen 1
L Input/Output Email mit großer Pdf Anhang auslesen? Allgemeine Java-Themen 6
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
T INI - Einträge auslesen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
O PDF auslesen und verändern, was ist besser iText oder PDFBox ? Allgemeine Java-Themen 9
Robertop Status von Caps- und NumLock auslesen Allgemeine Java-Themen 1
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
G Mac Package auslesen Allgemeine Java-Themen 17
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
M verschiedene Dokumente auslesen Allgemeine Java-Themen 1
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
L Dateien richtig auslesen Allgemeine Java-Themen 6
F WireGuard Status auslesen Allgemeine Java-Themen 3
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
N Txt Datei auslesen. Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
x46 Webseite in Java auslesen Allgemeine Java-Themen 2
M Html Seite auslesen Allgemeine Java-Themen 16
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
B Cookie auslesen Allgemeine Java-Themen 3
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
J Teil einer URL auslesen Allgemeine Java-Themen 13
denny86 NetBeans Ordnernamen rekursiv auslesen und in Variable verarbeiten Allgemeine Java-Themen 38
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
M aktive WLAN Teilnehmer auslesen? Allgemeine Java-Themen 6
X JSONObject auslesen und in HashMap hinterlegen Allgemeine Java-Themen 16
S Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern? Allgemeine Java-Themen 11
C Webseite auslesen Allgemeine Java-Themen 3
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
M Tastatureingabe von Sondertasten auslesen Allgemeine Java-Themen 6
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
T Url aus txt Datei auslesen und öffnen? Allgemeine Java-Themen 4
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
KeVoZ_ Properties mit String auslesen Allgemeine Java-Themen 11
I HTML einer Website auslesen liefert nur head Allgemeine Java-Themen 6
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
M Input/Output USB Geräteinstanzkennung auslesen Allgemeine Java-Themen 3
W 2D-Grafik Erstellungsdatum JPG direkt aus Header (EXIF) auslesen. Allgemeine Java-Themen 5
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
T Datei Byteweise auslesen Allgemeine Java-Themen 1
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
T Ini Datei auslesen Allgemeine Java-Themen 3
J Temperatur aus bytes auslesen. Allgemeine Java-Themen 13
I JSoup Class auslesen Allgemeine Java-Themen 1
Bluedaishi Textdateien auslesen Allgemeine Java-Themen 12
T ELM327 OBD2 auslesen Allgemeine Java-Themen 0
D Double aus String auslesen Allgemeine Java-Themen 8
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
A interaktives PDF auslesen/auswerten? Allgemeine Java-Themen 0
G Daten aus Website auslesen Allgemeine Java-Themen 7
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
I Java FX JsonObjekt Children auslesen Allgemeine Java-Themen 23
M RXTX Details auslesen Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben