我需要使用java启动批处理,几秒钟后我需要停止正在运行的批处理文件。
这是我的代码
try {
Process process=Runtime.getRuntime().exec("cmd /c start D:/test.bat");
Thread.sleep(20*1000);
process.destroy();
} catch (Exception e) {
e.printStackTrace();
}
我的代码无法停止批处理文件。
答案 0 :(得分:2)
这不是那么简单,因为你必须杀死刚刚开始的独立操作系统进程。看起来How to find and kill running Win-Processes from within Java?可能会对您有所帮助。
简而言之:您必须找到批处理脚本的PID(实际上是运行批处理脚本的cmd
进程)并使用taskkill
将其终止。
答案 1 :(得分:0)
如果批处理使用Java在cmd.exe中运行,请运行此
Process prClose = Runtime.getRuntime().exec("taskkill /im cmd.exe");
答案 2 :(得分:0)
如果您在.bat文件上运行java
或javaw
,则需要先终止批处理文件:
Runtime.getRuntime().exec("taskkill /f /im jqs.exe") ;
Runtime.getRuntime().exec("taskkill /f /im javaw.exe") ;
Runtime.getRuntime().exec("taskkill /f /im java.exe") ;
并停止cmd(如果需要)
Runtime.getRuntime().exec("taskkill /f /im cmd.exe") ;
希望这有帮助!