现在的代码是
try 
{
Process child=Runtime.getRuntime().exec("cmd.exe /c start "+batFileName);
InputStream in=child.getInputStream();
int c=0;
while(c!=-1)
{
c=in.read();
}
in.close();
try 
{
child.waitFor();

catch (InterruptedException e) 
{
e.printStackTrace();
}
System.out.println(batFileName+" done");

catch (IOException e) 
{
e.printStackTrace();
}一般情况下可以自动退出,可是某些时候,比如执行一个运行时间比较长的编译命令的时候,运行完不退出,即使后面的语句写了exit想强制退出也不执行。而从电脑上双击bat文件的时候却可以自动退出,是不是有什么特殊的命令呢,我看了一下cmd里的参数好像也没有特别的啊。谢谢诸位大拿了。

解决方案 »

  1.   

    cmd的命令没执行完就要退出?后台运行还是退出?
    退出的话不太可能我觉得,除非改JVM.
      

  2.   

    对,没有执行完,耗时很长的那个命令执行完后就不执行其他的命令了,后来我把其他的命令都放到另外一个bat文件里了,现在这个命令就是最后一个命令了,但是执行完还是不退出。
      

  3.   

    cmd.exe /c /c就是执行后关闭CMD窗口阿 楼主代码没错啊
      

  4.   

    把下面这段注掉呢
    InputStream in=child.getInputStream();
                int c=0;
                while(c!=-1)
                {
                    c=in.read();
                }
                in.close();
      

  5.   

    解决了,不从cmd启动bat文件了,直接运行bat文件,哈哈。
      

  6.   

    Process child=Runtime.getRuntime().exec(batFileName);