如何运行包含对批处理文件的调用的jar文件?

时间:2015-07-31 09:10:23

标签: java batch-file jar cmd windows-7-x64

我制作了一个java应用程序,有时应调用批处理文件,以便将视频从文件夹移动到另一个文件夹。批处理文件位于项目主类的相同目录中(ProjectName \ src \ move.bat)。

我通过指令得到了批处理文件的路径:

String pathMoveBat = new java.io.File("src\\move.bat").getAbsolutePath();

我使用下面的代码(通过按应用程序中的按钮调用)来调用该文件:

Process move = Runtime.getRuntime().exec(pathMoveBat+" "+username+" "+dateFormat.format(currentDate)+" "+i+"");

基本上,当我点击按钮时,没有任何事情发生,似乎Windows无法找到文件move.bat。 有没有其他方法可以从jar调用该文件?

1 个答案:

答案 0 :(得分:0)

在开始工作之前,您需要了解一些要点

  1. 要执行批处理文件,您需要一个外部程序,如命令提示符(cmd)。
  2. 您需要知道批处理文件的位置。在您的情况下,您将它放在src文件夹下,在生成jar时将无法使用它。由于src是源文件夹,因此应将批处理复制到bin / dist / classes文件夹(根据IDE或项目设置输出)。
  3. 使用Runtime执行进程时,请确保提供以空格分隔的相关参数。在这里,您将通过用户名和当前日期和i。
  4. 使用Runtime.exec执行批处理文件后,如果成功执行,则获取Process.getInputStream以捕获输出。您还需要Process.getErrorStream来检查执行批处理文件时是否有任何错误。
  5. 最后但并非最不重要的是关闭流,Process.getInputStream()。close(); Process.getOutputStream()close()方法。 Process.getErrorStream()关闭();
  6. Runtime.getRuntime()。exec(" cmd / c move.bat" + username +"" + dateFormat.format(currentDate)+"&# 34 + 1 +"&#34);

    如果可以,请切换到ProcessBuilder,它更好:https://stackoverflow.com/a/10723391/1129313