2013-04-18 57 views
2

Windows 7 cmd在執行ping -n 5 127.0.0.1 > nul時沒有問題。另外,Runtime.getRuntime.exec(new String[]{"ping", "-n", "5", "127.0.0.1"})工作正常。命令在Windows cmd中工作但失敗,Runtime.getRuntime.exec()

Runtime.getRuntime.exec(new String[]{"ping", "-n", "5", "127.0.0.1", ">", "nul"})Bad parameter >而失敗。爲什麼?

我在Java6模式下使用Java7。

+0

相關 - http://stackoverflow.com/questions/882772/capturing-stdout-when-calling-runtime-exec –

回答

2

>重定向不是ping命令的一部分,它本身是cmd的一部分。當exec()看到>時,它會嘗試將其作爲參數提供給ping

要獲得相同的功能,只需從Processexec返回值中讀取(並忽略)來自InputStream的數據。

1

因爲>不是ping的有效參數。在命令提示符處執行時,>被解釋爲輸出方向,但從Runtime().exec()使用時,不會被解釋並作爲參數傳遞給ping(因此爲錯誤消息)。

捕獲輸出(不直覺)使用Process.getInputStream()Process的實例返回Runtime.exec())。

+0

關閉。 'Process'的輸出在'getInputStream()'中,我知道這聽起來倒退了。 –

+0

@MelNicholson,謝謝。只需重新閱讀文檔。確實令人困惑。 – hmjd

+0

當然。謝謝! –

相關問題