CMD über Java öffnen

lam_tr

Top Contributor
Hallo zusammen,

weiss hier jemand wie ich cmd.exe über Java öffnen kann so dass der gewünschte Ordner auch schon selektiert wird.

Beispiel ich will den c:\test Ordner in der Konsole öffnen, wie kann ich es machen?

Runtime.getRuntime().exec("cmd /c start cmd.exe");

und wie mache ich den "cd c:\test" Aufruf?

Gruss lam
 

thewulf00

Bekanntes Mitglied
Also eine kurze Google-Suche liefert mir, dass man mittels
Code:
cmd /k <befehl>
einen ersten Befehl absetzen kann.
Wie man in Java einen Befehl ans OS weiterreicht, hast Du ja bereits erkannt. Also wo ist das Problem?
 

r.w.

Bekanntes Mitglied
Also eine kurze Google-Suche liefert mir, dass man mittels
Code:
cmd /k <befehl>
einen ersten Befehl absetzen kann.
Wie man in Java einen Befehl ans OS weiterreicht, hast Du ja bereits erkannt. Also wo ist das Problem?

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.

VG ROlf
 

Asgar13

Bekanntes Mitglied
Ist das nur für dich, sonst musst du mit den Laufwerkbuchstaben aufpassen, manche haben C: andere benutzen D: und wieder andere E: .
 

thewulf00

Bekanntes Mitglied
Ist das nur für dich, sonst musst du mit den Laufwerkbuchstaben aufpassen, manche haben C: andere benutzen D: und wieder andere E: .
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.
 

r.w.

Bekanntes Mitglied
Ist das Dein Ernst, dass Du von einem Code-Beispiel nicht auf die generische Variante schließen kannst?...

Nachdem ich schon einige deiner Beiträge gelesen hab, scheinst Du ein etwas dünnes Nervenkostüm zu haben... ;-)

Code:
cmd /k "E: & cd\test"

Meinen Code-Ausschnitt habe ich getestet.

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.
 

thewulf00

Bekanntes Mitglied
Nachdem ich schon einige deiner Beiträge gelesen hab, scheinst Du ein etwas dünnes Nervenkostüm zu haben... ;-)
Ja, das stimmt wohl :(



Meinen Code-Ausschnitt habe ich getestet.

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.
Gut, Du hast mich erwischt. Dann machs eben so: Getestet und für gut befunden.
Java:
import java.io.File;
import java.io.IOException;

public class CmdTest
{
    public static void main(String[] args) throws IOException
    {
        ProcessBuilder pb = new ProcessBuilder( "cmd", "/k", "start" );
        pb.directory( new File( "C:\\test" ) );
        pb.start();
    }
}


Ach ja und für jene Beispiel-Kopierer:
Java:
import java.io.File;
import java.io.IOException;

public class CmdTest
{
    public static void main(String[] args) throws IOException
    {
        String laufwerk    = "c";
        String verzeichnis = "test";
        
        ProcessBuilder pb = new ProcessBuilder( "cmd", "/k", "start" );
        pb.directory( new File( laufwerk+":\\"+verzeichnis ) );
        pb.start();
    }
}
 

r.w.

Bekanntes Mitglied
Java:
import java.io.File;
import java.io.IOException;

public class CmdTest
{
    public static void main(String[] args) throws IOException
    {
        ProcessBuilder pb = new ProcessBuilder( "cmd", "/k", "start" );
        pb.directory( new File( "C:\\test" ) );
        pb.start();
    }
}

Hey, das ist gut! Wieder etwas dazu gelernt. :)

VG ROlf
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Videodateien über Java öffnen unabhängig vom Format Allgemeine Java-Themen 4
S File im windowexploer öffnen über java Allgemeine Java-Themen 6
M Java programm über cmd öffnen Allgemeine Java-Themen 2
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
G USB-Pins über Java ansteuern Allgemeine Java-Themen 8
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
S VLC + Lied über Java starten Allgemeine Java-Themen 17
R Java-Progamm über Icon starten unter Windows Allgemeine Java-Themen 9
C Java Programm über SSH starten Allgemeine Java-Themen 16
L Java und Javascript um Distanz über Google Maps zu berchnen Allgemeine Java-Themen 10
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
M Ampelsteuerung über Timer in Java realisieren Allgemeine Java-Themen 3
J Java-Klasse über Konsole starten Allgemeine Java-Themen 6
D Unix/Linux Benutzer-Authentifikation über Java Allgemeine Java-Themen 3
N serialize deserialize java object über string Allgemeine Java-Themen 8
O Applikation über java steuern Allgemeine Java-Themen 11
M Wie Java-Programm über Batch-file starten? Allgemeine Java-Themen 8
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
S Perl Skript über Java aufrufen Allgemeine Java-Themen 10
M Java Versionen über Skript aktivieren/deaktivieren? Allgemeine Java-Themen 2
J Drucken über Java oder OOo empfehlenswert? Allgemeine Java-Themen 15
N Werte Von C++ nach Java über den Stream möglich? Allgemeine Java-Themen 8
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
A Linux-Consolenbefehle über Java ausführen? Allgemeine Java-Themen 2
W Daten in Access einfügen über Java Allgemeine Java-Themen 21
N Linux-Commands über Java Anwendung ausführen Allgemeine Java-Themen 12
M Eine Frage über Unit-Tests mit Java Allgemeine Java-Themen 2
R JavaScript im Browser über Java Allgemeine Java-Themen 5
K Java Version ermitteln (über System.getProperty hinaus) Allgemeine Java-Themen 6
S java Programme über Konsole starten Allgemeine Java-Themen 5
L Java Applikation über Netzwerk starten Allgemeine Java-Themen 8
J fortran exe über java ausführen Allgemeine Java-Themen 4
lhein Übergabe von Objekten von Java an C über JNI Allgemeine Java-Themen 5
kodela Datenübergabe über Buttons Allgemeine Java-Themen 8
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
A ByteArray über Socket Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
T Etikettendrucker über TCP-IP Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
L Aufwandsabschätzung: Android-App Aufnahmefunktion (foto) und zweiter Ebene über dem Foto (teiltransparent) Allgemeine Java-Themen 6
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Threads über Kommandozeile Allgemeine Java-Themen 5
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
K Auf Dateiverzeichnis extern zugreifen (evtl über XML??) Allgemeine Java-Themen 22
C VisualVM oder Jconsole über Jolokia-Proxy Allgemeine Java-Themen 0
Ernesto95 Best Practice Localization über ResourceBundle Allgemeine Java-Themen 6
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
kodela Eigenartige Datumsberechnung über GregorianCalendar Allgemeine Java-Themen 15
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
T .jar über cmd ausführen (später dann batch) Allgemeine Java-Themen 6
C Input/Output Zip Files über Socket senden und empfangen Allgemeine Java-Themen 6
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
F Content-Disposition ermitteln über URL Allgemeine Java-Themen 2
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
A Sinuston ausgeben und über Mikro Amplitude messen – machbar? Allgemeine Java-Themen 6
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
S NoSuchMethodError beim Ausführen einer C Methode über JNI Allgemeine Java-Themen 5
H OOP Daten über TCP Allgemeine Java-Themen 5
Pastafari Iterator über nested HashMaps Allgemeine Java-Themen 7
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
B VoIP-Gespräche über Computer führen Allgemeine Java-Themen 3
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2
K Internetverbindung über PuTTy herstellen?! Allgemeine Java-Themen 9
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
G Auf Kommandozeile über Processobjekt mit Outputstream Allgemeine Java-Themen 3
S Input/Output Binärdatei über Bytestreams Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben