ProcessBuilder - Java程序 - 运行批处理程序

时间:2013-09-24 17:24:18

标签: java processbuilder

我需要创建一个java实用程序,以便我们团队中的一个进程自动化。现有进程调用可执行文件并按顺序进行业务处理。我为此写了一个小程序

    FileInputStream fstream;
    try {
        String [] cmd = new String[3];

        if(System.getProperty("os.name").toLowerCase().contains("win")){
            cmd[0] = "cmd.exe";
            cmd[1] = "/C";
        } else{
            cmd[0] = "/bin/sh";
            cmd[1] = "-c";
        }

        fstream = new FileInputStream("C:\\JavaProgram.txt");
         BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
        String FileLine,FileLine1;

          //Read File Line By Line
          while ((FileLine = br.readLine()) != null)   
          {
            cmd[2]=FileLine;  
            ProcessBuilder proc = new ProcessBuilder(cmd);
            Process p = null;

            proc.redirectErrorStream(true);
            System.out.println("Starting Process "+ FileLine);
            p = proc.start();   
            BufferedReader br1 = new BufferedReader(new InputStreamReader(p.getInputStream()));

             while ((FileLine1 = br1.readLine()) != null)   
              {
                 System.out.println("Output"+ FileLine1);
              } 
            int exitValue = p.waitFor();
            System.out.println("\nExit Value is " + exitValue);
          }
          br.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

程序读取JavaProgram文件,该文件包含要按顺序执行的程序列表。现在我有以下问题:

  1. 该过程在后台运行并进行监控,我必须检查任务管理器。有没有办法让这个过程可以运行前景。
  2. 在某些情况下,程序会导致错误。这是捕获错误的正确方法,即基于waitfor()输出。当前逻辑只显示了值[我稍后会增强以显示正确的错误消息]
  3. 这是处理此要求的最佳方式[请忽略此时的基本冗余/额外处理,因为它处于开发阶段]
  4. 它将执行的某些程序将需要管理员权限。是否需要任何额外的代码
  5. 还有什么需要照顾的事吗?

0 个答案:

没有答案