在cmd窗口中启动进程并获取输出

时间:2013-02-06 22:55:11

标签: java process cmd

我想在使用Java的CMD窗口中启动一个进程,最简单的方法是通过

Runtime.getRuntime().exec("cmd /c start program.exe")

问题是现在我无法从流程中获得输入。如何从流程中获取输出并能够在单独的CMD窗口中运行它?

2 个答案:

答案 0 :(得分:0)

您的问题是start是一个单独的命令,其目的是启动一个与调用cmd的{​​{1}}无关的全新过程。无论start执行什么,都没有连接到原始start,并且您的Java程序无法访问它。

如果您需要访问子流程'in / out / err流,请不要使用cmd

答案 1 :(得分:0)

嘿兄弟,如果你想打印你的过程的输出过程使用这个

Process process= Runtime.getRuntime().exec("cmd /c start program.exe");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

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

通过这个,您将获得与cmd输出完全相同的每个输出过程。

如果你想处理2 cmd,你可以使用不同的exec进行2次处理

Process process1 = Runtime.getRuntime().exec("cmd /c start program1.exe");
Process process2 = Runtime.getRuntime().exec("cmd /c start program2.exe");

如果你想用同一个线程进行这个运行请阅读关于线程的java书籍,你可以用线程同时运行它。