Java执行外部程序并捕获输出

时间:2018-09-18 15:28:06

标签: java command-line

因此,我尝试Execute外部程序并捕获output。 目前,执行命令的部分工作正常(使用.bat文件),我可以在cmd窗口中看到输出。

不需要读取输出的部分,它似乎堆叠在我的while

这是我尝试过的:

String[] command = {"cmd.exe", "/C", "Start", "d:\\batFile.bat"};
        Process process =  Runtime.getRuntime().exec(command);
        InputStream is = process.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }

更新

这是我的.bat文件:

docker volume create --name=mydb
timeout 3
docker run -d -p 27017:27017 -v mydb:/data/db mongo
timeout 3

1 个答案:

答案 0 :(得分:0)

也许您可以尝试像这样重定向输出:

Process runtimeProcess1;
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C","Start","d:\\batFile.bat");

pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
pb.redirectInput(Redirect.INHERIT);

runtimeProcess1 = pb.start();

int processComplete1 = runtimeProcess1.waitFor();