Heim > Java > javaLernprogramm > Wie führt man mehrere Befehlszeilenbefehle in Java ordnungsgemäß aus?

Wie führt man mehrere Befehlszeilenbefehle in Java ordnungsgemäß aus?

Barbara Streisand
Freigeben: 2024-11-30 21:33:15
Original
646 Leute haben es durchsucht

How to Properly Execute Multiple Command-Line Commands in Java?

So führen Sie Befehlszeilenargumente über Java aus

Frage:

Wie führen Sie aus? Befehlszeilenargumente über Java? Betrachten Sie beispielsweise den folgenden Code:

// Execute command
String command = "cmd /c start cmd.exe";
Process child = Runtime.getRuntime().exec(command);

// Get output stream to write from it
OutputStream out = child.getOutputStream();

out.write("cd C:/ /r/n".getBytes());
out.flush();
out.write("dir /r/n".getBytes());
out.close();
Nach dem Login kopieren

Dieser Code öffnet die Befehlszeile, führt jedoch nicht die Befehle „cd“ oder „dir“ aus.

Antwort:

Um einen einzelnen Prozess für mehrere Befehle in Windows wiederzuverwenden, befolgen Sie diese Schritte Schritte:

  1. Erstellen Sie ein String-Array mit dem Befehlsnamen, in diesem Fall „cmd“.
  2. Führen Sie den Befehl mit Runtime.getRuntime().exec(command) aus.
  3. Starten Sie Threads, um Fehler und Ausgabeströme zu verarbeiten.
  4. Öffnen Sie einen PrintWriter für die Ausgabe stream.
  5. Schreiben Sie die gewünschten Befehle in den PrintWriter.
  6. Schließen Sie den PrintWriter.
  7. Warten Sie, bis der Vorgang mit p.waitFor() abgeschlossen ist.

Hier ist ein Beispiel:

String[] command = {"cmd"};
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("dir c:\ /A /Q");
stdin.close();
int returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);
Nach dem Login kopieren

SyncPipe Klasse:

class SyncPipe implements Runnable {
    public SyncPipe(InputStream istrm, OutputStream ostrm) {
        istrm_ = istrm;
        ostrm_ = ostrm;
    }

    public void run() {
        try {
            final byte[] buffer = new byte[1024];
            for (int length = 0; (length = istrm_.read(buffer)) != -1; ) {
                ostrm_.write(buffer, 0, length);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private final OutputStream ostrm_;
    private final InputStream istrm_;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie führt man mehrere Befehlszeilenbefehle in Java ordnungsgemäß aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage