tobiased
Goto Top

Auführung mehrere Command-line Befehle mit Java

Hallo Zusammen,

ich möchte gern ein kleines Script schreiben, welches mir mehrere CMD-Befehle hineinander ausführt. Mein Problem ist nun das ich mit dem Befehle
Process p = Runtime.getRuntime().exec(cmd /c dir)
nur einen Befehl übergeben kann, der in 1 Zeile geschrieben werden kann.
Den code mehremals zu verwenden also z.B.
Process p = Runtime.getRuntime().exec(cmd /c start dir)
Process p = Runtime.getRuntime().exec(cmd /c start ipconfig)
nützt mir nichts, da ich so immer wieder eine neue CMD aufrufe und somit ich nicht auf vorherigen Befehlen aufbauen kann was ich muss.
Meine Frage nun gibt es eine andere Möglichkeit dies zu lösen oder eine Möglichkeit einen "Enterdruck" zu übergeben.

Content-ID: 276139

Url: https://administrator.de/forum/aufuehrung-mehrere-command-line-befehle-mit-java-276139.html

Ausgedruckt am: 21.02.2025 um 12:02 Uhr

114757
Lösung 114757 01.07.2015 aktualisiert um 13:38:51 Uhr
Goto Top
Moin,
das geht mit dem ProcessBuilder:
http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

Gruß jodel32
colinardo
Lösung colinardo 01.07.2015, aktualisiert am 02.07.2015 um 11:13:44 Uhr
Goto Top
Hallo Tobiased,
wie @114757 schon richtigerweise erwähnt hat, ProcessBuilder ist dein Freund

Hier ein Beispiel für mehrere Befehle in einem gemeinsamen Environment:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class RunMultipleCommands {
    public static void main(String Args){
        // Kommandoliste erstellen (jedes Argument muss ein separates Array-Element sein)
        String commandlist = {
                {"ping","localhost"},  
                {"ping","8.8.8.8"}  
        };
        // Liste der Befehle ausführen
        RunCommands(commandlist);
    }
    // Funktion die die Befehle in einerm gemeinsamen Evironment ausführt
    public static void RunCommands(String commands){
        try{
            ProcessBuilder pb = new ProcessBuilder();
            String s = null;
            Charset charset = Charset.forName("IBM850");  
            BufferedReader stdInput;
            Process proc;
            for (String command :commands){
                pb.command(command);
                proc = pb.start();
                stdInput = new BufferedReader(new InputStreamReader(
                        proc.getInputStream(),charset));
                while ((s = stdInput.readLine()) != null) {
                    System.out.println(s);
                }
            }
    }catch(Exception ex){}
    }
}
Grüße Uwe
Tobiased
Tobiased 02.07.2015 um 11:14:31 Uhr
Goto Top
Ich danke euch face-smile