speedi Geschrieben 1. Oktober 2004 Geschrieben 1. Oktober 2004 :confused: Hallo Leute, ich habe ne Batch-Datei geschrieben die den Status von PC´s im Netzwerk anzeigt. Der Code dieser Batch sieht in etwa so aus: onoff.bat @ECHO OFF ping -n 1 -w 50 soave | findstr "TTL=" >NUL if %errorlevel%==0 echo Soave: online if %errorlevel%==1 echo Soave: offline Das funktioniert mittlerweile ganz gut. Doch jetzt kommt die nächste Stufe: Nun will das ein JAVA-Programm auf diese Batch aufruft und anzeigt so das der Benutzer das Ergebnis in ruhe lesen kann(über klick auf nen Button soll die *.bat geöffnet werden) oder noch besser, dass diese JAVA das ergebnis irgendwie erkennt und dann im JAVA-Programm der PC-Status von soave angezeigt wird. Wäre cool wenn jemand wüsste wie ich das machen kann. :confused: Zitieren
etreu Geschrieben 1. Oktober 2004 Geschrieben 1. Oktober 2004 Mit Runtime.getRuntime().exec("start batch.bat"); könntest du Beispielsweise die Datei ausführen. Zitieren
mkScheller Geschrieben 1. Oktober 2004 Geschrieben 1. Oktober 2004 Hi, so habe ich es damals gemacht: Process procSPL4exe = Runtime.getRuntime().exec(strCommandLine); // get the errorline from spl4.exe // and deliver one to the Vector InputStream InputStreamSPPexe = procSPL4exe.getErrorStream(); int nSPL4byteStream = InputStreamSPPexe.read(); String strErrorLine = new String(""); while (-1 != nSPL4byteStream) { String aChar = new Character((char) nSPL4byteStream).toString(); if (10 == nSPL4byteStream) { vecOutput.add(strErrorLine); //nSPL4byteStream = InputStreamSPPexe.read(); strErrorLine = ""; } else { strErrorLine = strErrorLine + aChar; } nSPL4byteStream = InputStreamSPPexe.read(); } Du musst den Datenstrom der zurückgeliefert wird über einen InputStream (bzw. Errorstream) einlesen und dann hast du das Ergebnis der Konsolen-Ausgabe in einem String, den du dann einfach weiter verarbeiten kannst. Zitieren
speedi Geschrieben 1. Oktober 2004 Autor Geschrieben 1. Oktober 2004 Mein Programmcode sieht jetzt in etwa so aus: import java.io.*; public class CmdExec2 { String strCommandLine; public CmdExec2(String ln) { strCommandLine = ln; } public String CmdExec3() { Process procSPL4exe = Runtime.getRuntime().exec(strCommandLine); // get the errorline from spl4.exe // and deliver one to the Vector InputStream InputStreamSPPexe = procSPL4exe.getErrorStream(); int nSPL4byteStream = InputStreamSPPexe.read(); String strErrorLine = new String(""); while (-1 != nSPL4byteStream) { String aChar = new Character((char) nSPL4byteStream).toString(); if (10 == nSPL4byteStream) { vecOutput.add(strErrorLine); //nSPL4byteStream = InputStreamSPPexe.read(); strErrorLine = ""; } else { strErrorLine = strErrorLine + aChar; } nSPL4byteStream = InputStreamSPPexe.read(); } } } jedoch erhalte ich beim Compilieren folgende Fehlermeldung: CmdExec.java:23: cannot resolve symbol symbol: variable vecOutput location: class CmdExec2 vecOutput.add(strErrorLine) ^ Woran liegt das jetzt schon wieder wie kann ich es ändern? Für mich hört sich das an als wäre vecOutput nicht definiert und ich soll die Variable definieren aber als was? //Code Tags hinzugefügt Zitieren
kingofbrain Geschrieben 1. Oktober 2004 Geschrieben 1. Oktober 2004 Als Vector! Und bitte benutz die Code Tags. Peter Zitieren
speedi Geschrieben 1. Oktober 2004 Autor Geschrieben 1. Oktober 2004 tut mir leid das ich des jetzt fragen muss aber was zum Teufel sind nun schon wieder Code Tags Zitieren
Peeter Geschrieben 1. Oktober 2004 Geschrieben 1. Oktober 2004 Das ist der Tag, den man benutzt um hier Code lesbar zu machen. Einfach wenn du deinen Text erstellst und etwas als Code markieren/lesbar machen willst den Button "#" drücken (in der erweiterten Erstellung eines Posts gleich neben dem Button "Antworten") Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.