3

我的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";
} 

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

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

有什么帮助吗?

4

1 回答 1

4

问题是您正在使用start- 它将启动一个的shell 来运行批处理文件。原来的 shell 然后关闭,所以进程终止,你的 Java 程序继续。

start就等待批处理文件结束而言,删除它应该可以工作。但是,当您启动otherProcess.

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

但是,如果您start /wait在 Java 代码中使用,那么据我通过实验可以看出,在批处理文件执行结束时,您最终会看到一个命令提示符。

于 2012-10-28T09:46:28.297 回答