Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)

                       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循环并没有执行呢。。????输入流中没有内容????

求高手解惑呀!!!!!




原文地址:https://www.cnblogs.com/oversea201405/p/3766883.html