4

我正在尝试使用 java process builder 执行 .bat 文件,但它不会启动该进程。请告诉我我在这里做错了什么。当我用 ./file.sh 替换 file.bat 时,此代码适用于 linux 环境

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);
} 
4

2 回答 2

7

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

ProcessBuilder builder = new ProcessBuilder(Arrays.asList(new String[] {"cmd.exe", "/C", WORKING_DIR + File.separator + "file.bat"}));
于 2013-06-15T06:24:14.357 回答
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);
} 
于 2013-06-15T06:19:53.543 回答