需要指导自动化多个.bat文件进程

时间:2011-02-08 21:22:04

标签: java automation console batch-file

我想用Java创建一个实用程序来自动化我们的构建过程。目前的过程涉及

  • 为服务器打开2个控制台。 (我想从java程序中打开这些控制台)
  • 在控制台中运行多个bat文件,并基于一个批处理文件输出,运行其他命令。

我需要先行,我应该使用哪些库。我可以从Java(独立)打开2个控制台。就像我的程序关闭那些控制台一直在运行。 (控制台是bea server,startWebLogic.cmd)。

3 个答案:

答案 0 :(得分:1)

当然,你可以打开任意数量的游戏机。如果您希望同时创建单独的线程,然后使用Runtime.exec()或ProcessBuilder创建进程。

但你为什么要这样做呢?有一个很好的老蚂蚁,是一个专门用于此类任务的构建工具。它支持所有内容,并且可以使用自定义任务进行扩展。

此外,如果您突然想起现在是2011年,请使用Apache Buildr等新工具。

答案 1 :(得分:1)

Alee,是的,你可以用Runtime.getRuntime()执行.exec(“file.bat”);然后你有2个选项,你可以捕获执行的输出

例如:

public static void main(String[] args) {
    System.out.println("hello");
    try {
        Process p = Runtime.getRuntime().exec("./prog.sh");
        InputStream in = p.getInputStream();

        System.out.println("OUTPUT");
        StringBuilder sb = new StringBuilder();
        int c;
        while( (c = in.read() ) > 0 ) {
            sb.append((char) c);
        }

        //here the script finished
        String output = sb.toString();
        if( output.contains("Exception")) { 
            System.out.println("script failed");
        }

        if( p.exitValue() == 0) {
            System.out.println("The script run without errors");
        } else {
            System.out.println("The script failed");
        }
    } catch (IOException e) {
        e.printStackTrace(); 
    }
}

这将捕获两种情况,您需要捕获输出,然后确定脚本是否成功运行,或者是否可以使用脚本中的退出状态。

exitValue代码为0表示成功,其他任何数字表示失败。

答案 2 :(得分:0)

Java的Runtime类具有启动Processes的方法,这些方法具有到其输入/输出流和其他管理的编程接口。但是,我不确定Windows如何处理其父母已经死亡的进程。

你也应该考虑通过VB或JScript使用Windows Script Host,因为你可能会有更好的控制。