如何在运行下一条命令之前等待cmd命令执行?

时间:2019-02-04 12:23:22

标签: java

在运行显示功能之前,需要等待cmd命令执行。

在执行显示功能之前,需要Process p完全执行。

String command1 = "cmd /c start cmd.exe /k \"" + processCommand1 + " && " + processCommand2  +" && "+ exitCommand+"\"";

Process p = Runtime.getRuntime().exec(command1);

display();

3 个答案:

答案 0 :(得分:8)

一种方法是使用Process.waitFor()。但是,在您的示例中,您使用的是cmd /c start,它将在后台异步运行实际程序。您应确保程序在没有start的情况下同步启动,以便您可以等待它。

答案 1 :(得分:1)

最好使用java.lang.ProcessBuilder。 JavaDoc的示例: https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html 像这样:

ProcessBuilder processBuilder = new ProcessBuilder("...");
...
Process process = processBuilder.start();
...
int exitCode = process.waitFor();

答案 2 :(得分:-2)

    Process p;
    try {
        p = Runtime.getRuntime().exec(command);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
            output.append(line + "\n");
            if (line.contains(exitConfirm)) {
                break;
            }
        }
        p.waitFor();
    } catch (Exception e) {
        e.printStackTrace();
    }


    display()

此代码将等待特定的退出行或等待过程完成