我正在尝试从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();
答案 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";
}