从Windows批处理文件中删除jar

时间:2015-05-21 08:36:15

标签: java windows batch-file jar cmd

我有一个Java应用程序应该通过在线下载新版本来更新自己,然后它应该自行删除,我已经管理了更新,现在我需要删除旧的jar文件。 由于我的应用程序将仅在Windows上运行我认为我可以使用bat文件,所以我编写了用于创建应该关闭JVM的批处理文件的代码(因此jar文件不会被锁定)然后它应该删除jar文件然后它应该删除bat文件(bat文件应该能够自行删除)。 代码是这样的:

String pat = new File("delete.bat").getAbsolutePath();
FileWriter fw = new FileWriter(pat);
PrintWriter pw = new PrintWriter(fw);
pw.println("taskkill /F /IM \"java.exe\"");
pw.println("DEL /F \""+ jarname +"\"");
pw.println("DEL /F \"delete.bat\"");
pw.close();
System.out.println("cmd /c START \"\" \"" + pat + "\"");
Runtime.getRuntime().exec("cmd /c START \"\" \"" + pat + "\"");

实际上工作不算太糟糕,它删除了jar和bat但是...删除后仍然有命令提示符打开,这真的很难看到:/ 我甚至尝试在DEL / F" delete.bat"之后放置退出,但由于蝙蝠已被删除,因此无法读取退出命令... 关于如何使提示关闭的一些想法?

2 个答案:

答案 0 :(得分:1)

您可以通过两种方式关闭命令提示符

  1. 在bat脚本的最后一行添加Exit   pw.println( “退出”);
  2. 使用start而不是cmd启动CMD

    Runtime.getRuntime()。exec(“start \”\“\”“+ pat +”\“”);

答案 1 :(得分:1)

我用Desktop.getDesktop()解决了.open(新文件(pat));

希望这可以帮助某人。