p.getOutputStream()
p.getErrorStream()
都不停地往外读取内容。
原因是这样的,bat命令输出的内容会输出到一块缓冲区内存中。
如果你不及时读取出来,当缓冲区内存满了以后,
bat命令会停止执行。
所以办法就是要把执行bat命令的输出内容读取出来,不能让缓冲区满。
public static void main(String[] args) {try {
String command = "C:\\Users\\Administrator\\Desktop\\do.bat"
Process p = Runtime.getRuntime().exec(command)
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"))//注意中文编码问题
String line
while ((line = br.readLine()) != null) {
System.out.println("StartedLog==>"+line)
}
br.close()
} catch (IOException e) {
}
}
自己试试吧,不知道可行不可行.
java可使用Runtime.exec执行bat文件,示例代码如下: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文件的方式)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)