.bat文件执行的时候,如果有屏幕输出,就必须要读取这个输出,如果不读取,就会导致这个bat不会被执行下去。所以,只要用个InputStream把输出读出来就ok了。
另外,谁也不能保证Process运行以后系统的PATH到底是什么,所以建议写上调用的bat的绝对路径
import java.io.IOException;
import java.io.InputStream;
public class TestProcess {
public static void main(String[] args) {
String command = "c:\\aaa.bat";
try {
Process child = Runtime.getRuntime().exec(command);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);//如果你不需要看输出,这行可以注销掉
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("done");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}