如何使用Java在单个终端中执行多个命令?

时间:2018-04-23 13:40:02

标签: java

src

通过使用上述程序,我可以在终端中执行命令,但它会打开终端的多个实例。我想在同一个终端中执行这两个命令。这可能吗?

2 个答案:

答案 0 :(得分:2)

根据建议,您可以将命令放在将从java程序运行的.bat文件中,也可以使用&&&运算符。

(两个运算符之间的区别在于&&只有在第一个命令成功时才会执行第二个命令。)

试试这个:

rt.exec("cmd /c start cmd.exe /K \"java -version && javac -version\"");

答案 1 :(得分:1)

您也可以使用ProcessBuilder java API来执行此操作。默认情况下,Runtime.getRuntime()。exec将对输入进行标记,在ProcessBuilder的情况下,它将按原样执行命令。

public class TestCommands {

    public static void main(String[] args) throws IOException, InterruptedException {

        String[] commands = {"echo hello","echo hi","java -version"};

        for(String command : commands) {
            execute(command);
        }
    }


    public static void execute(String command) throws InterruptedException, IOException {
        ProcessBuilder builder = new ProcessBuilder("cmd.exe","/c",command);
        Process process = builder.inheritIO().start();
        process.waitFor();

        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String readline;
        while ((readline = reader.readLine()) != null) {
            System.out.println(readline);
        }
    }
}