在java中调用dos命令,如何判断它是否执行完成?

时间:2022-09-02 20:20:28
Runtime.getRuntime().exec("dos命令");

但我怎么知道它已经执行完成了呢?比如说我要生成一个文件,下面一条语句就要用到这个文件,但我运行时,这个文件还没有生成就运行到下一条语句了,导至文件不存在的错误!
当然我可以让系统sleep几秒种,但这总不是解决方法啊!

20 个解决方案

#1


看命令提示行

#2


如果是文件操作,应该用java.io.*
File中的方法应该可以实现你的需要,如果你是要特殊的需要的话,那我也不知道了。

获取dos的输出流,然后再以输出的内容来判断,也是解决这个问题的方法之一。

#3


Process.waitfor();

#4


yefc:
我用了process.waitfor()以后,程序就停下来不动了?

#5


yefc说得没错,用waitfor();

Process p=Runtime.getRuntime().exec("dos命令");
p.waitFor();
System.out.println("Process p=Runtime.getRuntime().exec(\"dos命令\");命令执行完毕");

程序就停下来不动了,可能是运行时产生了Dos命令提示符窗口没有关闭。


#6


大侠,确实无法运行下去啊,这是一个简单的命令,我试了好几次啦!!只能ctrl+c解决

    Process proc = null;
    try{
      proc = Runtime.getRuntime().exec("cmd /c dir");
      proc.waitFor();
      System.out.println("bbbb");
    }catch(Exception e){
      e.printStackTrace();
    }

#7



这个可以的,给你参考一下:


import java.io.*;

class testRuntime
{
public static void main(String[] args)
{
Process proc = null;
try{
proc = Runtime.getRuntime().exec("c:\\winnt\\system32\\notepad.exe");
proc.waitFor();
System.out.println("bbbb");
}catch(Exception e){
e.printStackTrace(System.out);
}
}
}


#8



前面不加路径也行。

#9


我试了几把,发现如果dos命令不产生屏幕输出,则可以,如果有屏幕输出,如dir则不行!

有没有解决方法啊,大侠?

#10


因为我调用的那个exe命令执行完成后,要给一个提示,所以就引起了问题!

#11


你可以用process.getOutputStream()往那个被调用程序输入,让那个程序继续运行下去啊。要不就增加检查文件的机制,不去等待你那个命令的结束。

#12


我那个被调用程序不用输入,只是它执行过程中要给出一些提示而已,我又无法去掉这些提示。
这时那个exe命令就无法结束
不知还有没有高手解决这个问题?

#13


是的,我用CMD /C DIR也不行,运行时DOS屏幕黑屏,没任何显示,必须手动结束DOS窗口.

#14


up

#15


Process proc = null;
    try{
      proc = Runtime.getRuntime().exec("command.com /c dir");
      proc.waitFor();
      System.out.println("bbbb");
    }catch(Exception e){
      e.printStackTrace();
    }                       
这样看看?

#16


不行啊

#17


这不会是JAVA的一个BUG吧?

#18


??????

#19


看这代码没什么问题,但就是不行呀 。

#20


if(new File(yourfilepath)=null){
your cmd
}

#1


看命令提示行

#2


如果是文件操作,应该用java.io.*
File中的方法应该可以实现你的需要,如果你是要特殊的需要的话,那我也不知道了。

获取dos的输出流,然后再以输出的内容来判断,也是解决这个问题的方法之一。

#3


Process.waitfor();

#4


yefc:
我用了process.waitfor()以后,程序就停下来不动了?

#5


yefc说得没错,用waitfor();

Process p=Runtime.getRuntime().exec("dos命令");
p.waitFor();
System.out.println("Process p=Runtime.getRuntime().exec(\"dos命令\");命令执行完毕");

程序就停下来不动了,可能是运行时产生了Dos命令提示符窗口没有关闭。


#6


大侠,确实无法运行下去啊,这是一个简单的命令,我试了好几次啦!!只能ctrl+c解决

    Process proc = null;
    try{
      proc = Runtime.getRuntime().exec("cmd /c dir");
      proc.waitFor();
      System.out.println("bbbb");
    }catch(Exception e){
      e.printStackTrace();
    }

#7



这个可以的,给你参考一下:


import java.io.*;

class testRuntime
{
public static void main(String[] args)
{
Process proc = null;
try{
proc = Runtime.getRuntime().exec("c:\\winnt\\system32\\notepad.exe");
proc.waitFor();
System.out.println("bbbb");
}catch(Exception e){
e.printStackTrace(System.out);
}
}
}


#8



前面不加路径也行。

#9


我试了几把,发现如果dos命令不产生屏幕输出,则可以,如果有屏幕输出,如dir则不行!

有没有解决方法啊,大侠?

#10


因为我调用的那个exe命令执行完成后,要给一个提示,所以就引起了问题!

#11


你可以用process.getOutputStream()往那个被调用程序输入,让那个程序继续运行下去啊。要不就增加检查文件的机制,不去等待你那个命令的结束。

#12


我那个被调用程序不用输入,只是它执行过程中要给出一些提示而已,我又无法去掉这些提示。
这时那个exe命令就无法结束
不知还有没有高手解决这个问题?

#13


是的,我用CMD /C DIR也不行,运行时DOS屏幕黑屏,没任何显示,必须手动结束DOS窗口.

#14


up

#15


Process proc = null;
    try{
      proc = Runtime.getRuntime().exec("command.com /c dir");
      proc.waitFor();
      System.out.println("bbbb");
    }catch(Exception e){
      e.printStackTrace();
    }                       
这样看看?

#16


不行啊

#17


这不会是JAVA的一个BUG吧?

#18


??????

#19


看这代码没什么问题,但就是不行呀 。

#20


if(new File(yourfilepath)=null){
your cmd
}

#21