您的位置 首页 java

java 调用 exe

一些业务需求中,可能会涉及 java服务调用windows 的本地服务,下面简单写个demo。

1.首先随便写个脚本test.bat,大概就是打印输入参数,持续几秒模拟exe的运行过程。

直接执行exe的话,cmd 切换到脚本目录,1 2 3即为参数,空格分隔

 test 1 2 3  
 @echo off

echo echo %1 %2 %3

echo 10%
ping -n 3 127.0.0.1>nul

echo 30%
ping -n 3 127.0.0.1>nul

echo 70%
ping -n 3 127.0.0.1>nul

echo 90%
ping -n 5 127.0.0.1>nul

echo 解析完成!  

2.封装java函数来调用exe程序,ProcessBuilder 有几个构造方法,如果不需要额外的参数的话,只需要把command传进去即可;带参数的话,需要几个带几个。waitFor是等待程序执行完。

 public static void runExe(String p1, String p2, String p3) {
        ProcessBuilder pb = new ProcessBuilder(command, p1, p2, p3);
        BufferedReader is = null;
        try {
            Process p = pb.start();
            int ret = p.waitFor();
            is = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = is.readLine()) != null) {
                log.info(line);
            }
            if (ret == 0) {
                log.info("Command has sucessfully completed.");
            } else {
                log.info("Command completed with return code " + ret);
            }
        } catch (Exception e) {
            log.info("catch Exception " + e.getMessage() + " running command " + command);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    log.info("stream close failed!. ");
                }
            }
            if (null != pb) {
                pb.directory();
            }
        }
    }  

3.测试

  private static String command = "C:\Desktop\test.bat";
public static void main(String[] args) {
        runExe("a", "b", "c");
 }  

4.结果

文章来源:智云一二三科技

文章标题:java 调用 exe

文章地址:https://www.zhihuclub.com/178263.shtml

关于作者: 智云科技

热门文章

网站地图