import java.io.*
import java.util.*
public class TestExec {
public void runbat(int name) {
String cmd = "cmd /c start D:/bat/"+name+".bat"
try {
Process ps = Runtime.getRuntime().exec(cmd)
System.out.println(ps.getInputStream())
} catch(IOException ioe) {
ioe.printStackTrace()
}
}
public static void main(String[] args){
TestExec test1 = new TestExec ()
test1.runbat("abc")
}
}
其中,abc.bat可以是已经存在的bat,也可以是动态生成的bat(如果需要根据已有参数执行bat,则可以使用动态生成bat文件的方式)
我当时解决的办法是。p.getOutputStream()
p.getErrorStream()
都不停地往外读取内容。
原因是这样的,bat命令输出的内容会输出到一块缓冲区内存中。
如果你不及时读取出来,当缓冲区内存满了以后,
bat命令会停止执行。
所以办法就是要把执行bat命令的输出内容读取出来,不能让缓冲区满。
bat文件内容如下:cd <arg0>
java <-classpath arg1><-jar>arg2 <arg3 arg4..>
说明:
<尖括号里的不是必须的,按你的具体情况来>
arg0:你的class或jar文件所在目录
arg1:你需要引入的jar文件,如果你已经在window的classpath里配置过或者不需要,那这句可以去掉
arg2:java类(*.class或*.jar)文件
arg3 arg4..:若干个参数,如没有也可以去掉
前提是你安装了jdk,并配置了环境变量