java执行bat批处理文件(下)

在《java执行bat批处理文件(上)》中调用cmd来执行bat文件,存在的问题是在调用cmd时会弹出黑框,这个问题的解决方法多种多样,在这里介绍两种可行的方法:

方法一:

这个方法的原理很简单,就是利用中介,即java通过调用执行vbs文件来调用cmd执行bat文件,属性设置为隐藏即可。

1.新建一个文本文件
2.写入如下内容

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c 你的文件名.bat",0 

其中的属性0代表隐藏。

3.保存为.vbs文件
4.java代码还是上一篇博客的,只是需要修改java调用批处理文件中的strcmd字符串,改成执行你保存的vbs文件,而不是批处理文件了。

String strcmd = “cmd /c start 你的文件名.vbs”

方法二:

通过vbs文件来做中介解决这个问题还是觉得过于麻烦,于是尝试着用其他办法来解决这个问题。其实,可以不通过cmd,直接执行bat文件。比如需要在java中调用windows系统的计算器组件,我们可以直接执行bat文件来打开系统的计算器。

1.新建mybat.txt,在其中写入:
@calc.exe

2.保存成bat格式的文件,并复制到java工程目录

3.重新编写java程序

public class runBat {

    /** * @param args */
    public static void main(String[] args) {

        String batName = "mybat.bat"; //该bat文件保存在项目目录下,所以无需写出完整路径,如果文件不在项目目录下则需要直接写出文件路径
        runBat rBat = new runBat();
        rBat.run_bat(batName);

    }

    public void run_bat(String batName) {

            Process ps;
            try {
                ps = Runtime.getRuntime().exec(batName);
                ps.waitFor();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        System.out.println("finish");       
    }

}

4.运行程序后可以看到系统的计算器被调用了。

你可能感兴趣的:(java,批处理文件)