【发布时间】:2014-08-23 17:04:00
【问题描述】:
我已经就如何实现这一目标提出了几个问题。
如here 所述,我使用了process.waitFor() 和/wait。问题是这样做不仅会等待命令执行,而且会等待关闭 cmd 提示符(可以通过在 bat 文件中添加 exit 来完成)。但我无法将 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 I wait? -
那要看
C:/Folder/c.bat在做什么了。如果它异步启动一个可执行文件,那么您将无法等待该可执行文件终止而不找出它的进程 ID,然后等待它关闭。 -
@Bill_Stewart 你的观点是有效的,假设如果我使用我提到的上述逻辑。无论如何我可以检查提示是否返回,如果是的话我可以继续。在我的情况下是 bat 文件正在停止和启动应用程序服务器
-
按照你的建议去做将是一个非常尴尬和脆弱的解决方案。更好的解决方案是找到可执行文件的进程 ID 并等待它关闭。
标签: java windows batch-file