package com.xrda.api.JunitOrder;
import java.io.IOException;
import java.io.InputStream;
/**
*
* @Title: InvokeBat.java
* @Package com.xrda.api.JunitOrder
* @Description: 在java中直接运行bat文件
* @author 徐建峰
* @date 2016年7月11日 下午3:24:34
* @version 1.0
*/
public class InvokeBat{
/**
*
* @Description: 在java中直接运行bat文件
* @param batName bat文件的指定路径;也可以写为cmd /c start /b G:\\source\\source.bat
* void
* @throws
* @author 徐建峰
* @date 2016年7月11日 下午5:33:18
*/
public void runbat(String batName) {
Process ps = null;
try {
//调用另一个现成的可执行程序或系统命令
//1.执行DOS的内部命令 2.打开一个不可执行的文件 3.执行一个有标准输出的DOS可执行程序
ps = Runtime.getRuntime().exec(batName);
InputStream in = ps.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);// 如果你不需要看输出,这行可以注销掉
}
in.close();
ps.waitFor();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int i = ps.exitValue();//执行结果
if (i == 0) {
System.out.println("数据库还原成功") ;
} else {
System.out.println("数据库还原失败") ;
}
ps.destroy();//销毁
// System.out.println("child thread done");
}
public static void main(String[] args) {
InvokeBat test1 = new InvokeBat();
String batName = "G:\\source\\source.bat";
//解决不弹框只需要“start”后面加一个参数“/b”就行:
// String batName1 = "cmd /c start /b G:\\source\\source.bat";
test1.runbat(batName);
// test1.runbat(batName1);
System.out.println("main thread");
}
}