使用可视窗口通过ProcessBuilder触发cmd.exe命令

时间:2014-10-03 07:34:26

标签: java cmd processbuilder

我正在使用此代码:

ProcessBuilder builder = new ProcessBuilder("cmd.exe","java","invalidArg");
builder.redirectErrorStream(true);

try {
    Process p = builder.start();
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()),10240);
    String line;
    if(processIsTerminated(p)){
            line = r.readLine();
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

当我使用.start()函数时,有没有办法让cmd窗口打开?目前它运行隐藏,如果没有响应,我不知道我的命令是成功运行还是根本没有运行。

1 个答案:

答案 0 :(得分:1)

你在Windows下只有两种运行命令的方法:

  • 你的方式:你可以完全访问lauched命令的输入,输出和错误流,但它没有窗口,无论如何它都不会写任何东西,因为你的程序获得所有输出
  • 要求cmd.exe在自己的窗口中启动另一个命令(并且optionnaly等待它的结束)。但是当命令写入自己的窗口时,程序无法访问命令的输入,输出或错误流

您可以使用start [/w] command arguments的{​​{1}}命令获取第二种执行方式,只需在cmd窗口中键入cmd.exe即可查看会发生什么情况(start /w cmd.exe /c "echo foo & pause"仅在那里让你有时间阅读输出...)

从java开始,它将是:

& pause