我已經經歷了幾個關於如何實現這一點的問題。 我使用process.waitFor()
和/wait
如here所述。問題在於,它不僅等待命令執行,而且直到cmd提示符關閉(可以通過在bat文件中添加exit
來完成)。但我無法將bat文件修改爲其產品文件。從java執行.bat文件並等待完成
Runtime run = Runtime.getRuntime();
try {
String path = "C:/Folder/c.bat";
String executeCmd= "cmd /c start /wait "+path;
final Process process =run.exec(executeCmd);
process.waitFor();
System.out.println("did I wait?");
} catch (Exception e) {
e.printStackTrace();
}
如何讓它等待直到命令執行。
取出'start/wait'? (它看起來像你已經在等待cmd.exe關閉。) –
@Bill_Stewart如果我刪除'start',它不會被執行,如果我刪除'wait'。它甚至不等待並打印_did等待?_ – 2FaceMan
然後它取決於'C:/ Folder/c.bat'在做什麼。如果它是異步啓動可執行文件,那麼您將無法等待該可執行文件終止,而無需查找其進程ID,然後等待它關閉。 –