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

    求高手解惑呀!!!!!




  • 相关阅读:
    FFT 和 NTT
    神秘构造题
    P4396 [AHOI2013]作业
    杜教筛学习笔记
    杜教筛
    「$mathcal{Darkbzoj}$」神犇和蒟蒻
    「CQOI2015」选数
    「$mathcal{Atcoder}$」$mathcal{ARC101}$
    「NOI2019」退役记???
    「李超线段树」
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766883.html
Copyright © 2020-2023  润新知