Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Naja, z.B. könnte das Problem auftreten, dass das Verzeichnis nicht auf dem aktuellen Laufwerk liegt.
Dann bräuchte man nämlich 2 Befehle (einen zum Laufwerkswechsel und einen für das Verzeichis).
In dem Fall könnte man sich z.B. so behelfen:
Java:
//...
public static void main(String[] args) {
try {
Runtime runtime = Runtime.getRuntime();
// Erste Shell oeffnen...
// In dieser Instanz wird schon in das
// Laufwerk:\Verzeichnis gewechselt,
// jedoch kein neues Fenster geoeffnet.
// Daher wird aus dieser Instanz spaeter noch einmal
// eine weitere Shell mit "start" aufgerufen, die
// sich dann schon im richtigen Verzeichnis befindet.
Process process = runtime.exec("cmd.exe /K");
OutputStream os = process.getOutputStream();
OutputStreamWriter ow = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(ow);
// Wechel des Laufwerks
bw.write("c:");
bw.newLine();
// Verzeichnis wechseln
bw.write("cd \\temp");
bw.newLine();
// dann, neue Shell oeffnen
// mit ggf. weiterer Anweisung wie hier z.B. "dir"
bw.write("start cmd.exe /K dir");
bw.newLine();
// Hier machen weitere Anweisungen keinen Sinn, da diese in der
// ersten (unsichtbaren) Instanz der Shell ausgeführt werden wuerden.
bw.flush();
bw.close();
ow.close();
os.close();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
//...
Ist nur so auf die Schnelle zusammengestrickt und irgendwie noch eine Krücke,
denn die erste Shell öffnet bei mir nur dann ein Fenster, wenn ich sie per
"start cmd.exe /K" aufrufe. Dann bekomme ich allerdings keinen OutputStream
mehr zur cmd.exe sondern zur aufrufenden Instanz.
Wenn man direkt die erste Instanz der Shell als Fenster öffnen könnte und für diese
auch noch einen OutputStream hätte, würde das die Sache natürlich erleichtern und
auch weitere Anweisungen möglich machen. Hat dazu jemand einen Tipp?
Klar könnte man sich zu dieser natürlich auch den InputStream holen, aber ich denke,
das würde den Rahmen für diesen Fall hier sprengen.
Naja, z.B. könnte das Problem auftreten, dass das Verzeichnis nicht auf dem aktuellen Laufwerk liegt.
Dann bräuchte man nämlich 2 Befehle (einen zum Laufwerkswechsel und einen für das Verzeichis).
Ist das Dein Ernst, dass Du von einem Code-Beispiel nicht auf die generische Variante schließen kannst?
Der TO hat nach einer Variante gefragt, CMD aus Java aufzurufen und in C:\Test zu beginnen. Das habe ich ihm gezeigt.
Danach kritisierte jemand diese Lösung, weil es nur C: beinhaltet. Also habe ich gezeigt, wie es auf jedem Laufwerk geht.
Und nun kommst Du und kritisierst ... was genau?
Herrje, ich wusste vor diesem Thread auch nicht, wie das geht. Aber ich kann google anscheinend bedienen. Wer immer noch Fragen oder Kritik hat: nur her damit! Aber sachlich bleiben und die Angaben auch verstehen.
DU scheinst Deinen allerdings nicht mit dem runtime.exec(...) getestet zu haben.
Sonst hättest Du gemerkt, dass sich da kein Fenster auftut. Und das ist es,
worum es dem TO ging.
DU scheinst Deinen allerdings nicht mit dem runtime.exec(...) getestet zu haben.
Sonst hättest Du gemerkt, dass sich da kein Fenster auftut. Und das ist es,
worum es dem TO ging.