用java processbuilder运行bat文件

时间:2013-06-15 06:17:14

标签: java batch-file processbuilder

我正在尝试使用java进程构建器执行.bat文件,但它不会启动该进程。请告诉我这里我做错了什么。当我用./file.sh

替换file.bat时,这段代码可以正常使用linux enwernment
final ArrayList<String> command = new ArrayList<String>();
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
    builder.redirectErrorStream(true);
    builder.start();
    } catch (IOException e) {
      logger.error("Could not start process." ,e);
} 

2 个答案:

答案 0 :(得分:3)

数组中的第一个元素必须是可执行文件。因此,您必须调用cmd.exe才能调用批处理文件。

ProcessBuilder builder = new ProcessBuilder(Arrays.asList(new String[] {"cmd.exe", "/C", WORKING_DIR + File.separator + "file.bat"}));

答案 1 :(得分:1)

确保bat文件的路径正确。您可以使用调试器对其进行调试,也可以使用sysout来确定:

final ArrayList<String> command = new ArrayList<String>();
System.out.println("Batch file path : " + WORKING_DIR+File.separator+"file.bat")
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
    builder.redirectErrorStream(true);
    builder.start();
    } catch (IOException e) {
      logger.error("Could not start process." ,e);
}