20. April 2024

CMD Kommandozeile in Java ausführen

Java bietet eine sehr einfache Möglichkeit die Kommandozeile in der JVM zu verwenden.

In diesem Artikel finden Sie eine Beispielhafte Implementierung, die sie ganz einfach für Ihren Anwendungsfall anpassen können.

Die Implementierung zeigt auch, wie man auf stdout und stderr, also den Standard-Output und den Fehlerkanal des Kommandozeilenaufrufs zugreifen kann.

class Command {

    private String basedir;

    public Command(String basedir) {
        this.basedir = basedir;
    }

    public void exec(String command) throws InterruptedException {
        System.out.println("executing command: " + command);
        Process p = null;
        try {
            p = Runtime.getRuntime().exec(
                    "cmd /c " //Nur unter Windows notwendig!
                    + command, null, new File(basedir));

        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println("OUTPUT");
        printStream(p.getInputStream());
        System.out.println("ERROR-OUTPUT");
        printStream(p.getErrorStream());
    }

  
    public void printStream(InputStream stream) {
        BufferedReader in = new BufferedReader(
                new InputStreamReader(stream));
        String line = "";
        try {
           while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    } 

Je nach Anwendungsfall kann man die Ausgabe zum Beispiel auch in einen String umwandeln und dann durchsuchen.

Zu beachten ist, dass die Plattformunabhängigkeit beim Aufruf der Kommandozeile nicht mehr zwingend gegeben ist. Auch schon die unterschiedliche Konfiguration auf verschiedenen Rechnern hat Auswirkungen auf die Verwendung der Kommandozeile.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert