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循环并没有执行呢。。????输入流中没有内容????
求高手解惑呀!!!!!