在《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.运行程序后可以看到系统的计算器被调用了。