CMD
连续调用多次
连续多次调用cmd执行外部程序时,不知道什么原因导致阻塞。
public ArrayList<String> executeCmdArr(ArrayList<String> cmdCommandArr) {
ArrayList<String> cmdLog = new ArrayList<String>();
String lineData;
try {
for (String parameter : cmdCommandArr) {
System.out.println("CallCMD -- executeCmdArr:\t" + parameter);
process = Runtime.getRuntime().exec(parameter);
//A
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
while ((lineData = reader.readLine()) != null){
cmdLog.add(lineData);
}
}
return cmdLog;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
当使用下述命令多次使用“XCOPY”命令进行复制时,在A这里会阻塞,一直在等待:
cmdCommandArr = new ArrayList<String>(){{
add("cmd.exe /k xcopy E:\\Z\\2016-10-13\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
add("cmd.exe /k xcopy E:\\Z\\2016-10-14\\*twsp*.txt E:\\X\\twsp\\ /f /y");
add("cmd.exe /k xcopy E:\\Z\\2016-10-14\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
}};
但是当使用下述命令多次使用“XCOPY”命令进行复制时,就可以正常执行完全部复制操作:
cmdCommandArr = new ArrayList<String>(){{
add("xcopy E:\\Z\\2016-10-13\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
add("xcopy E:\\Z\\2016-10-14\\*twsp*.txt E:\\X\\twsp\\ /f /y");
add("xcopy E:\\Z\\2016-10-14\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
}};
查摆在于调用时,是否加入“cmd.exe”,至于造成这一问题的原因,目前还不清楚。