Hallo zusammen,
ich möchte mit meinem Javaprogramm Batchfiles ausführen.
Leider klappt das zur zeit nur mit einer Flickenlösung und ich wollte hier mal nach anderen Ideen zur Lösung des problems fragen.
Zunächst habe ich eine Tabelle in der alle möglichen Batchdateien drin stehen. Auf Knopfdruck wird folgende methode aufgerufen:
Diese Methode durchläuft alle markierten Files und schreibt eine temporäre batch Datei, die dann per "cd" command in das verzeichnis navigiert und dort die entsprechende Batchdatei ausführt.
Zu dieser Lösung bin ich gekommen, da wenn ich den string "s" also die generierte abfolge von commands direkt ausgeführt habe hat sich zwar die console geöffnet aber nciht die auszu führende Batch datei.
Gibt es eine bessere Möglichkeit als die oben beschriebene, denn ich möchte eigentlich gern mit Java die Prozesse beenden können aber das ist durch diese Lösung nicht möglich.
Danke
Gruß,
Esco
ich möchte mit meinem Javaprogramm Batchfiles ausführen.
Leider klappt das zur zeit nur mit einer Flickenlösung und ich wollte hier mal nach anderen Ideen zur Lösung des problems fragen.
Zunächst habe ich eine Tabelle in der alle möglichen Batchdateien drin stehen. Auf Knopfdruck wird folgende methode aufgerufen:
Code:
public void actionPerformed(ActionEvent e) {
try {
int[] rows = grid.getSelectedRows();
for(int i = 0; i < rows.length; i++){
File file = new File(grid.getValueAt(rows[i], 0).toString());
File tmp = new File("tmp.bat");
FileWriter fw = new FileWriter(tmp);
BufferedWriter bw = new BufferedWriter(fw);
String s =
file.getAbsolutePath().substring(0,2)+"\n"+
"cd \""+file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf("\\")+1)+"\"\n"+
"start \""+grid.getValueAt(rows[i], 1).toString()+"\" "+file.getName()
;
bw.write(s);
bw.close();
fw.close();
String cmd = "cmd /c tmp.bat";
Runtime.getRuntime().exec(cmd);
int time = 1000;
try{
time = Integer.valueOf(wait.getText()).intValue();
}catch(Exception e1){
time = 1000;
}
if(time < 0){
time = 1000;
}
Thread.sleep(time);
}
} catch (IOException e1) {
e1.printStackTrace();
} catch (InterruptedException e1) {}
}
Diese Methode durchläuft alle markierten Files und schreibt eine temporäre batch Datei, die dann per "cd" command in das verzeichnis navigiert und dort die entsprechende Batchdatei ausführt.
Zu dieser Lösung bin ich gekommen, da wenn ich den string "s" also die generierte abfolge von commands direkt ausgeführt habe hat sich zwar die console geöffnet aber nciht die auszu führende Batch datei.
Gibt es eine bessere Möglichkeit als die oben beschriebene, denn ich möchte eigentlich gern mit Java die Prozesse beenden können aber das ist durch diese Lösung nicht möglich.
Danke
Gruß,
Esco