等待批量结束

时间:2012-10-28 09:41:08

标签: java batch-file runtime.exec

我的bat文件中有4行,但我的帖子在cmd关闭之前继续。

这是我的代码:

rt = Runtime.getRuntime();
proc = rt.exec("cmd /c start C:\\temp\\test.bat");
if(proc.waitFor() == 0) {
    return "did it";
} else {
    return "nooope";
} 

在cmd关闭之前,我总是得到did it。 这是我的批处理文件:

@ECHO off
taskkill /IM "Process.exe" /F
cd "C:\Program Files\ProcessFolder"
START /WAIT Process.exe
START otherProcess.exe
EXIT

任何帮助?

1 个答案:

答案 0 :(得分:4)

问题是您正在使用start - 这将启动运行批处理文件的 shell。然后原始shell关闭,因此进程终止,Java程序继续。

删除start,它在等待批处理文件结束方面应该有效。但是,当您启动otherProcess时,您在批处理文件中再次遇到了同样的问题。

要么不使用start,要么总是在批处理文件中使用start /wait

但是,如果在Java代码中使用start /wait,那么在批处理文件执行结束时,你最终会得到一个命令提示符,据我通过实验来判断。 / p>