Hallo zusammen,
ich möchte gern verschiedene batch Dateien aus einer Java Anwendung heraus starten, deren Output auf entsprechende Listen umlenken (pro batch datei eine liste) und die Möglichkeit haben, Befehle an diese Batch Dateien zu senden. Nun hab ich das mit dem starten der Batch files und dem abfangen der Ausgaben und umlenken auf die Listen schon hinbekommen, aber irgendwie haperts an dem zusenden weiterer Befehle an diese Batch Dateien.
(Ich muß dazu sagen, das aus den Batchdateien auch wieder andere Java Progs ohne gui gestartet werden und die nun mal ab und zu ne eingabe erwarten).
Ich hab mir gedacht, das ich nun einfach die Geschichte mit dem BufferedReader zu nem BufferedWriter umschreibe aber irgendwie hat das nicht hingehauen, habt ihr ne idee, bzw ein konkreten vorschlag, wie ich Befehle an die laufende Batch datei schicken kann??? Es muß doch irgendwie über diese Process Anbindung gehen?!?!?
Danke für eure Hilfe
Thomas
ich möchte gern verschiedene batch Dateien aus einer Java Anwendung heraus starten, deren Output auf entsprechende Listen umlenken (pro batch datei eine liste) und die Möglichkeit haben, Befehle an diese Batch Dateien zu senden. Nun hab ich das mit dem starten der Batch files und dem abfangen der Ausgaben und umlenken auf die Listen schon hinbekommen, aber irgendwie haperts an dem zusenden weiterer Befehle an diese Batch Dateien.
(Ich muß dazu sagen, das aus den Batchdateien auch wieder andere Java Progs ohne gui gestartet werden und die nun mal ab und zu ne eingabe erwarten).
Code:
public class ExecSim extends Thread{
static final int MODE_WAITFOR = 1;
static final int MODE_CATCHOUTPUT = 2;
public void run(){
try{
runShellCommand(cmd, mode, dlm);
}catch(IOException e){
JOptionPane.showMessageDialog(Main.getInstance(),"IOException: "+e, "IOException", 0);
}
}
public void runCommand(String cmd, int mode, DefaultListModel dlm)
throws IOException
{
Runtime rt = Runtime.getRuntime();
System.out.println("Running " + cmd);
Process pr = rt.exec(cmd);
while(true){
if(isInterrupted()){
System.out.println("INTERRUPT !!!");
break;
}
if(mode == MODE_WAITFOR){
dlm.addElement("WAITING for Termination");
System.out.println("WAITING for Termination");
try{
pr.waitFor();
}catch(InterruptedException e){}
}else if(mode == MODE_CATCHOUTPUT){
//read the output
BufferedReader procout = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while((line = procout.readLine()) != null){
if(!line.equals("")){
System.out.println("out > "+line);
dlm.addElement("out> "+line);
}
}
}
}
}
}
Ich hab mir gedacht, das ich nun einfach die Geschichte mit dem BufferedReader zu nem BufferedWriter umschreibe aber irgendwie hat das nicht hingehauen, habt ihr ne idee, bzw ein konkreten vorschlag, wie ich Befehle an die laufende Batch datei schicken kann??? Es muß doch irgendwie über diese Process Anbindung gehen?!?!?
Danke für eure Hilfe
Thomas