使用进程和运行时类执行批处理文件

时间:2016-02-06 23:38:46

标签: java batch-file file-io

我正在尝试让我的程序编写一个批处理文件来结束JVM,并删除正在运行的jar文件。 我通过调试得出结论,批处理文件没有被执行。这是相关的代码。

public void stopKill() {
    try {
        //The batch file we are writing to
        File killFile = new File("E:\\killFile.bat");
        PrintWriter output = new PrintWriter(killFile);
        //The jar file that is currently running.
        File jarFile = new File(networkCheck.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
        output.println("taskkill /IM javaw.exe /F");
        output.println("del \"" + jarFile.toString() + "\"");
        output.close();
        Runtime r = Runtime.getRuntime();
        //Execute the batch file
        try {
            Process p = r.exec(killFile.toString());
        } catch (IOException ex) {
            System.out.println("Uh-oh!");
        }
    } catch (FileNotFoundException ex) {
        Logger.getLogger(networkCheck.class.getName()).log(Level.SEVERE, null, ex);
    } catch (URISyntaxException ex) {
        Logger.getLogger(networkCheck.class.getName()).log(Level.SEVERE, null, ex);
    } 
}

这是在我的系统上调用此函数时打印到批处理文件的文本。

taskkill /IM javaw.exe /F
del "C:\Users\Christian\Desktop\Coding\Java\NetworkCheck\dist\NetworkCheck.jar"

提前感谢您的帮助。如果有任何需要澄清的信息,请询问。

1 个答案:

答案 0 :(得分:2)

使用r.exec( "cmd.exe /c start \"E:\\killFile.bat\"" );