嘿,我正在嘗試更改目錄,然后使用參數運行我的命令。final String path = "\\Local// Apps\\IBM\\SDP\\scmtools\\eclipse";final String command = "scm help";final String dosCommand = "cmd /c \"" + path + "\"" + command;final Process process = Runtime.getRuntime().exec(dosCommand);final InputStream in = process.getInputStream();int ch;while((ch = in.read()) != -1) { System.out.print((char)ch);}它運行沒有錯誤,但沒有輸出任何內容。但是,這是完成后顯示的內容:<terminated, exit value: 0>C:\Local Apps\IBM\SDP\jdk\bin\javaw.exe (Jul 22, 2019, 11:21:37 AM)預期的輸出應該是:那我這樣做正確嗎?正如安德烈亞斯所建議的Process p = null;ProcessBuilder pb = new ProcessBuilder("scm.exe");pb.directory(new File("C:/Local Apps/IBM/SDP/scmtools/eclipse"));p = pb.start();我收到以下錯誤:無法運行程序“scm.exe”(在目錄“C:\Local Apps\IBM\SDP\scmtools\eclipse”中):CreateProcess error=2,系統(tǒng)找不到指定的文件
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
你應該使用ProcessBuilder
instead of?Runtime.exec
,例如
Process?proc?=?new?ProcessBuilder("scm.exe",?"help") ????????.directory(new?File("C:\\Local?Apps\\IBM\\SDP\\scmtools\\eclipse")) ????????.inheritIO() ????????.start(); proc.waitFor();?//?optional
如果需要,您還可以通過命令解釋器,例如,如果命令是腳本(.bat 或 .cmd 文件):
Process?proc?=?new?ProcessBuilder("cmd",?"/c",?"scm",?"help") ????????.directory(new?File("C:\\Local?Apps\\IBM\\SDP\\scmtools\\eclipse")) ????????.inheritIO() ????????.start(); proc.waitFor();
這inheritIO()
意味著您不需要處理命令輸出。它將被發(fā)送到控制臺,或者 Java 自己的輸出所在的任何地方。
添加回答
舉報
0/150
提交
取消