Java Выполнить внешнюю программу и захватить вывод - PullRequest
0 голосов
/ 18 сентября 2018

Так что я пытаюсь 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 голосов
/ 18 сентября 2018

Может быть, вы можете попытаться перенаправить вывод следующим образом:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...