前言
兄弟篇:Java——通过Java代码启动批处理文件(一)
第一篇是直接执行批处理文件,但是有两种情况不能处理:
1.路径里面带有空格的情况,2.环境变量设置问题The CATALINA_HOME environment variable is not defined correctly;
本篇文章主要解决上述两个问题:
@Override
public void exeCmdInFolder(String folderPath, String batName) {
fileUtils.checkPath(folderPath);
log.info("Start to call cmd {} in {}", batName, folderPath);
StringBuilder sb = new StringBuilder();
try {
Process process = Runtime.getRuntime().exec("cmd.exe /c " + batName, null, new File(folderPath));
InputStream in = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line + "\n");
}
log.info(sb.toString());
in.close();
// process.waitFor();
} catch (Exception e) {
log.error("Faild to call cmd process cmd because {}", e.getMessage());
}
}
调用方式:
batService.exeCmdInFolder("批处理文件所在的文件夹", "批处理文件名称");