从 Windows 批处理文件中自行删除 jar
Self Delete jar from Windows batch file
我有一个 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 但是...删除后仍然打开命令提示符,这真的很难看:/
我什至尝试将 exit 放在 DEL /F "delete.bat" 之后,但由于 bat 已被删除,因此无法读取 exit 命令...
关于如何关闭提示的一些想法?
您可以通过两种方式关闭命令提示符
- 在bat脚本的最后一行添加Exit
pw.println("exit");
使用 start 而不是 cmd 启动 CMD
Runtime.getRuntime().exec("开始\"\" \"" + pat + "\"");
我用 Desktop.getDesktop().open(new File(pat));
解决了
希望这对某人有所帮助。
我有一个 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 但是...删除后仍然打开命令提示符,这真的很难看:/ 我什至尝试将 exit 放在 DEL /F "delete.bat" 之后,但由于 bat 已被删除,因此无法读取 exit 命令... 关于如何关闭提示的一些想法?
您可以通过两种方式关闭命令提示符
- 在bat脚本的最后一行添加Exit pw.println("exit");
使用 start 而不是 cmd 启动 CMD
Runtime.getRuntime().exec("开始\"\" \"" + pat + "\"");
我用 Desktop.getDesktop().open(new File(pat));
解决了希望这对某人有所帮助。