Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)
在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下也方便自己温故而知新。
1.cmd命令如下:
cmd /c dir 执行完dir后关闭命令行窗口
cmd /k dir 执行完dir后 不 关闭命令行窗口
cmd /c start dir 打开新窗口执行 dir,原窗口关闭 (注:这种情况要想执行完后窗口自动关闭,必须在bat脚本最后加上exit)
cmd /k start dir 打开新窗口执行 dir,原窗口 不 关闭
2.例子(有问题!!!!求高手帮忙解答啊!!!)
package com.sheepmu; import java.io.File; import java.io.IOException; import java.io.InputStream; public class MyTest { public static void main(String[] args) { // String cmd="cmd.exe /c start E:\\mybat.bat"; 注意这一句!!!!!!!! String[] cmd={"cmd.exe","/c","start","E:"+File.separator+"mybat.bat"}; Process ps = null;//局部变量必须初始化 try { ps = Runtime.getRuntime().exec(cmd); } catch (IOException e) { e.printStackTrace(); } InputStream in = ps.getInputStream(); int c; try { while ((c = in.read()) != -1) { System.out.print("哈哈哈哈"); //并没有输出!!!!!!!!!!????????? 求高手解答!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! System.out.print(c); } } catch (IOException e) { e.printStackTrace(); } try { in.close(); } catch (IOException e) { e.printStackTrace(); } try { ps.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } } }
常看到两种cmd语句的表示,一种是带空格的字符串,一种是字符串数组!经查询资料得知,最好还是用字符串数组的形式,因为用字符串在执行Runtime.getRuntime().exec(cmd)时可能无法执行bat语句中的重定向及管道操作符。
对bat脚本的调用已经成功了的,如下图:
问题问题:
为什么while循环并没有执行呢。。????输入流中没有内容????
求高手解惑呀!!!!!