执行不回

时间:2014-02-26 16:35:08

标签: java cmd label exec

我正在尝试从java执行label cmd命令,但是当我调用exec并等待进程结束时它会冻结。您认为这个问题是什么?

    String[] comand = {"cmd.exe","label D: CIAO"};
    Runtime rt = Runtime.getRuntime();
    Process proc;

    try {
        proc = rt.exec(comand);     
        int exitCode=proc.waitFor();
        System.out.println(exitCode);
    } catch (IOException e) {
        e.printStackTrace();

1 个答案:

答案 0 :(得分:0)

请记住,如果您只是自己执行CMD或COMMAND,它将启动它自己的“shell”窗口并且不会返回。您必须使用/ c告诉它执行命令并返回。对于Windowz NT和更好的它应该是CMD.exe /c your_command,对于Windowsz 95或更差,它应该是COMMAND.com /c your_command并检查使用以下Java代码:

String os = System.getProperty("os.name").toLowerCase();
if (os.indexOf("windows 9") > -1) {
  cmd = "CMD.exe /c";
} else if ((os.indexOf("nt") > -1) || (os.indexOf("windows 2000") > -1) || (os.indexOf("windows xp") > -1)) {
  cmd = "COMMAND.com /c";
}