Java 需要指导以自动化多个.bat文件流程

Java 需要指导以自动化多个.bat文件流程,java,automation,console,batch-file,Java,Automation,Console,Batch File,我想用Java创建一个实用程序来自动化我们的构建过程。目前的进程包括 为服务器打开2个控制台。(我想从java程序打开这些控制台) 在控制台中运行多个bat文件,并基于一个批处理文件输出,运行其他命令 我需要领先,我应该使用什么库。我可以从Java(独立)打开2个控制台吗。即使我的程序关闭了,这些控制台也会继续运行。(控制台是bea服务器,startweblog.cmd) 您当然可以打开任意数量的控制台。如果希望同时执行此操作,请创建单独的线程,然后使用Runtime.exec()或Proc

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

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

我需要领先,我应该使用什么库。我可以从Java(独立)打开2个控制台吗。即使我的程序关闭了,这些控制台也会继续运行。(控制台是bea服务器,startweblog.cmd)

您当然可以打开任意数量的控制台。如果希望同时执行此操作,请创建单独的线程,然后使用Runtime.exec()或ProcessBuilder创建进程

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

此外,如果您突然想起现在是2011年,请使用更新的工具,如ApacheBuildr。

Java的类有一些方法可以启动,这些方法具有与输入/输出流和其他管理的编程接口。但是,我不确定Windows如何处理双亲已死亡的进程


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

< P> Alee,是的,你可以用运行时来做。GeRunTunMe()。Exc.(“文件.BAT”);然后有两个选项,可以捕获执行的输出

例如:

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表示成功,任何其他数字表示失败。

谢谢您的指针。我当然不想重新发明轮子。但是如果它能在项目中帮助我的话,我肯定会调查的。问题是这个项目已经非常成熟,并且已经使用了至少10-16个ant脚本。这些文件依次由.bat文件运行。我正在考虑自动化那些.bat文件来处理ant脚本扫描,我在这个输出中搜索特定的字符串?该控制台中可能会引发异常,以正确的退出代码结束控制台。但由于异常,进程未完成。我如何处理它呢?在Windows中,我相信您必须使用exec'd进程的stdout/stderr流才能完成它。