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

时间:2012-01-13 07:25:21

标签: 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();
    }

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

3 个答案:

答案 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文件上运行javajavaw,则需要先终止批处理文件:

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") ;

希望这有帮助!