我的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
任何帮助?
答案 0 :(得分:4)
问题是您正在使用start
- 这将启动运行批处理文件的新 shell。然后原始shell关闭,因此进程终止,Java程序继续。
删除start
,它在等待批处理文件结束方面应该有效。但是,当您启动otherProcess
时,您在批处理文件中再次遇到了同样的问题。
要么不使用start
,要么总是在批处理文件中使用start /wait
。
但是,如果在Java代码中使用start /wait
,那么在批处理文件执行结束时,你最终会得到一个命令提示符,据我通过实验来判断。 / p>