java Runtime exec 如何获得完整命令行输出?

324 阅读1分钟

Runtime.getRuntime().exec 如何获得输出?可以用它的 input、error 两个输出流获得。但是,当命令执行过快时,有时只能获得一部分的命令行输出。

那么,如何获得完整命令行输出?全网都是复制粘贴,答案其实很简单 ——

首先,结合上文,习得技巧 《java Runtime exec 执行多条命令》

最终,在执行真实指令之前,可以通过延时一段时间的方式,来允许我们获得全部的命令行输出。

Process proc = Runtime.getRuntime().exec("cmd");
OutputStream output = proc.getOutputStream();
Charset cs = StandardCharsets.UTF_8;
output.write("ping -n 1 127.0.0.1".getBytes(cs));
output.write("\n".getBytes(cs));
output.write(mingling.getBytes(cs));
output.write("\n".getBytes(cs));
output.write("exit".getBytes(cs));
output.write("\n".getBytes(cs));
output.flush();

这里用 ping 方法实现延时。

方法二:使用 powsershell 而不是 cmd,powsershell 由于本身启动较慢,无此问题,无须手动延时。