Windows 7 cmd
执行ping -n 5 127.0.0.1 > nul
没有问题。此外,Runtime.getRuntime.exec(new String[]{"ping", "-n", "5", "127.0.0.1"})
工作正常。
但Runtime.getRuntime.exec(new String[]{"ping", "-n", "5", "127.0.0.1", ">",
"nul"})
以Bad parameter >
失败。为什么呢?
我在Java6模式下使用Java7。
答案 0 :(得分:2)
>
重定向不是ping命令的一部分,它是cmd
本身的一部分。当exec()
看到>
它试图将其作为参数提供给ping
时。
要获得相同的功能,只需从InputStream
Process
返回值中读取(并忽略)exec
中的数据。
答案 1 :(得分:1)
因为>
不是ping
的有效参数。在命令提示符上执行时,>
被解释为输出方向,但是当从Runtime().exec()
使用时,它不被解释并作为参数传递给ping
(因此错误消息)。
要捕获输出(不直观),请使用Process.getInputStream()
(Process
返回Runtime.exec()
的实例。)