如何使用java停止正在运行的批处理文件

如何使用java停止正在运行的批处理文件,java,process,cmd,Java,Process,Cmd,我需要使用java启动一个批处理,几秒钟后我需要停止运行批处理文件 这是我的密码 try { Process process=Runtime.getRuntime().exec("cmd /c start D:/test.bat"); Thread.sleep(20*1000); process.destroy(); } catch (Exception e) { e.printStackTrace(); } 我

我需要使用java启动一个批处理,几秒钟后我需要停止运行批处理文件

这是我的密码

try {
        Process process=Runtime.getRuntime().exec("cmd /c start  D:/test.bat");
        Thread.sleep(20*1000);
        process.destroy();
    } catch (Exception e) {
        e.printStackTrace();
    }

我的代码无法停止批处理文件。

这并不是那么简单,因为您必须终止刚刚启动的独立操作系统进程。看起来可能对你有帮助


简而言之:您必须找到批处理脚本的PID(实际上是运行批处理脚本的
cmd
进程的PID),并使用
taskkill

将其杀死。如果批处理使用Java在cmd.exe中运行,请运行此命令

Process prClose = Runtime.getRuntime().exec("taskkill /im cmd.exe");

如果在.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") ;