【问题标题】:how to stop a running batch file using java如何使用java停止正在运行的批处理文件
【发布时间】:2012-01-13 07:25:20
【问题描述】:

我需要使用 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 process cmd


    【解决方案1】:

    这并不是那么简单,因为您必须杀死刚刚启动的独立操作系统进程。看起来How to find and kill running Win-Processes from within Java? 可能会对您有所帮助。

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

    【讨论】:

      【解决方案2】:

      如果批处理使用 Java 在 cmd.exe 中运行,请运行此

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

      【讨论】:

        【解决方案3】:

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

        希望对您有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-14
          • 2015-01-24
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          相关资源
          最近更新 更多