2012-02-14 30 views
1

對不起,如果我再次重新打開相同的問題。我想運行兩個命令如何使用進程生成器運行兩個不同的命令

  1. d:\ cygwin的\斌\測試

  2. SH app.sh AK-RD 02.20 d:\ cygwin的\斌\ Test_files

以上是我想要在同一個命令提示符下運行的兩個命令意味着我必須進入D:\ cygwin \ bin \ Test文件夾和在同一提示符下運行下一個命令

SH app.sh AK-RD 02.20 d:\ cygwin的\斌\ Test_files

的命令看起來像,

命令: - d:\ cygwin的\斌\測試> SH app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files

如何在java中使用process Builder進行此操作。或者還有其他方法可以做到這一點。

String cmd; 
    cmd = "sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files"; 
    ProcessBuilder probuilder = new ProcessBuilder(cmd); 
    probuilder.directory(new File("D:\\cygwin\\bin\\Test")); 
    Process process = probuilder.start(); 

這不是幫助我,即使我在代碼中更改probuilder.directory。我越來越

Cannot run program "'sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files CreateProcess error=2, The system cannot find the file specified 

回答

0

錯誤意味着系統無法找到路徑的文件sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files.exe

這意味着ProcessBuilder將整個字符串(包括反斜槓和空格以及所有內容)解釋爲命令名稱。這不是你想要的。

拆分命令爲單個單詞:

ProcessBuilder pb = new ProcessBuilder("sh", "app.sh", "AK-RD", "02.20", "D:\\cygwin\\bin\\Test_files"); 

,並使用pb.directory()CD到正確的目錄。

或者,把一切都變成BAT/CMD腳本,然後運行以ProcessBuilder

0

您可以撥打

ProcessBuilder pb = new ProcessBuilder(); 
pd.directory(new File("D:\\cygwin\\bin\\Test")); 

設置工作目錄。

編輯:

您也可以嘗試,並分割你的命令放到參數

String cmd[] = new String[5]; 
cmd[0] = "sh"; 
cmd[1] = "app.sh"; 
cmd[2] = "AK-RD"; 
cmd[3] = "02.20"; 
cmd[4] = "D:\\cygwin\\bin\\Test_files"; 
+0

u能告訴究竟= 2,系統找不到指定的文件 – 2012-02-14 07:57:45

+0

我應該是因爲我得到錯誤CreateProcess的錯誤當沒有將命令分成參數時,我們看到了一些奇怪的行爲。分裂爲你工作?還沒有愛? – ughzan 2012-02-14 08:17:28

相關問題