命令在Windows cmd中有效但在Runtime.getRuntime.exec()时失败

时间:2013-04-18 07:54:58

标签: java windows

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。

2 个答案:

答案 0 :(得分:2)

>重定向不是ping命令的一部分,它是cmd本身的一部分。当exec()看到>它试图将其作为参数提供给ping时。

要获得相同的功能,只需从InputStream Process返回值中读取(并忽略)exec中的数据。

答案 1 :(得分:1)

因为>不是ping的有效参数。在命令提示符上执行时,>被解释为输出方向,但是当从Runtime().exec()使用时,它不被解释并作为参数传递给ping(因此错误消息)。

要捕获输出(不直观),请使用Process.getInputStream()Process返回Runtime.exec()的实例。)