2012-01-13 126 views
1

我需要使用java开始批处理,几秒钟后我需要停止正在运行的批处理文件。如何使用java停止正在运行的批处理文件

这里是我的代码

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

我的代码未能阻止该批处理文件。

回答

2

这并不是那么简单,因为你必须杀死一个你刚刚开始的独立操作系统进程。看起来像How to find and kill running Win-Processes from within Java?可能会帮助你。

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

0

如果批中的cmd.exe使用Java运行时,如果你对你的.bat文件运行javajavaw运行此

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

,你需要先终止您的批处理文件:

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

希望这有助于!