从java执行.bat文件并等到它完成

时间:2014-07-02 19:01:36

标签: java windows batch-file

我已就如何实现这一目标提出了几个问题。 我使用了process.waitFor()/wait here。问题是通过这样做,它不仅等待命令执行,而且直到cmd提示被关闭(可以通过在bat文件中添加exit来完成)。但是我不能将bat文件修改为Product文件。

Runtime run = Runtime.getRuntime();

    try {
        String path = "C:/Folder/c.bat";
        String executeCmd= "cmd /c start /wait "+path;
        final Process process =run.exec(executeCmd);        
        process.waitFor();
         System.out.println("did I wait?");
    } catch (Exception e) {         
        e.printStackTrace();
    }

如何让它等到命令执行完毕。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容创建帮助程序批处理文件:

start /wait %1\c.bat
exit

将此帮助程序批处理存储在您想要的任何位置。

然后启动此助手批处理文件,其路径为c.bat作为参数。

   Runtime run = Runtime.getRuntime();

    try {
      String pathToCBatch = "C:\\Folder\\"; 
      String pathToHelperBatch = "c:/helperBatch.bat";
      String executeCmd = "cmd /c start /wait " + pathToHelperBatch + " " + pathToCBatch;
      final Process process = run.exec(executeCmd);
      System.out.println(System.currentTimeMillis());
      process.waitFor();
      System.out.println(System.currentTimeMillis());
    } catch (Exception e) {
      e.printStackTrace();
    }

答案 1 :(得分:0)

我也有同样的问题:“调用批处理文件并等到它完成”( Windows PC )。这个解决方案对我有用:

StringBuilder command = new StringBuilder("cmd /c start /wait C:\\script.bat");
    // my script take 2 file as arguments
    command.append(" ").append(inputFile);
    command.append(" ").append(outputFile);
    try {
        final Process p = Runtime.getRuntime().exec(command.toString());
        p.waitFor();
    } catch (InterruptedException e) {
        System.out.println(e);
    }