Befehlszeilenbefehle über Java ausführen
Das Ausführen externer Befehle aus einem Java-Programm kann nützlich sein, um Aufgaben zu automatisieren oder auf Systemfunktionen zuzugreifen. Wie jedoch in der ersten Frage gezeigt, führt die einfache Verwendung von Runtime.getRuntime().exec() möglicherweise nicht zum gewünschten Verhalten, insbesondere bei der Interaktion mit der Windows-Eingabeaufforderung.
Um dieses Problem zu beheben, benötigen Sie eine erweiterte Herangehensweise ist erforderlich. Wie im zitierten Beitrag vorgeschlagen, besteht eine effektive Lösung darin, einen Prozess wiederzuverwenden, um mehrere Befehle auszuführen. Der folgende Code veranschaulicht diese Technik:
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"); // Add additional commands here stdin.close(); int returnCode = p.waitFor(); System.out.println("Return code = " + returnCode); class SyncPipe implements Runnable { public SyncPipe(InputStream istrm, OutputStream ostrm) { istrm_ = istrm; ostrm_ = ostrm; } public void run() { try { byte[] buffer = new byte[1024]; int length; while ((length = istrm_.read(buffer)) != -1) { ostrm_.write(buffer, 0, length); } } catch (Exception e) { e.printStackTrace(); } } private final OutputStream ostrm_; private final InputStream istrm_; }
Erklärung:
Dieser Ansatz ermöglicht eine interaktivere Ausführung von Befehlen an der Windows-Eingabeaufforderung aus einer Java-Anwendung heraus.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Befehlszeilenbefehle von einem Java-Programm aus effizient ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!