2011-11-08 69 views
0

可能重複執行命令:
Java execute a command with a space in the pathname如何使用Java

我有以下命令

i_view32.exe C:\*.bmp /import_pal=C:\default.pal /convert=D:\temp\*.bmp 當我通過命令提示符下運行,工作正常。 我想在java的幫助下運行相同的命令。

Process p = Runtime.getRuntime().exec(System.getenv("ProgramFiles")+"\\IrfanView\\i_view32.exe c:\\*.bmp /import_pal= 1.pal /convert=d:\\temp\\*.bmp"); 

但我不能得到輸出在d:\\temp\\文件夾。任何人都可以告訴我我錯在哪裏。

在此先感謝..

是否有任何其他的方式給"/",因爲我用斜槓/import_pal=

+0

你是否檢查'System.getenv(「ProgramFiles」)'實際上是否返回你所需要的? – Simeon

+1

你有沒有嘗試過使用帶有String []參數的exec?我很確定使用Process.exec(字符串命令)不工作,如果你有額外的參數。 – Henrik

+0

該命令給出了一些輸出..你可以嘗試閱讀與p.getInputStream()和p.getErrorStream()獲得輸出從進程 – Ash

回答

0

2您的嘗試不完全相同。我認爲你在c:\Program Files\IrfanView時執行了命令提示符下的命令。當你試圖從Java運行相同的命令時,你會提到完整的路徑。由於某些程序對當前工作目錄敏感,我建議您首先嚐試從其他目錄(例如c :)運行命令,但指定完整路徑。

如果它可以手動工作,但不能從java工作,請嘗試使用ProcessBuilder而不是Runtime.exec()。實際上它幾乎是相同的,但它更面向對象,並允許單獨指定工作目錄。我希望這會對你有用。

如果不嘗試玩引號。目錄路徑'c:\ Program Files'包含空格,所以路徑應該被引用。

祝你好運。

0

嘗試執行CMD

例子:

proc = Runtime.getRuntime().exec("cmd.exe /c dir"); 

它應該像這樣工作,舉個例子,這有點複雜,但是試試這樣。

+0

它的Runtime.getRuntime()。exec – Muse

+0

你說得對,只是打錯字符:) – MOleYArd