Processbuilder:无法将 2 个路径组合为参数以使用宏执行应用程序

Processbuilder: Cannot combine 2 paths as argument to execute app with a macro

所以为了工作,我想为 minitab 自动化一些东西。我们从显微镜中获得结果,这些结果需要输入到 Minitab 中。现在我想制作一个程序,对文本文件进行一些更改,然后使用宏自动打开 minitab。除了使用 minitab 自动打开宏外,我一切正常。

我可以从 cmd 手动启动它没问题,所以它应该可以工作。

代码可以在下面找到,编译后 运行 我得到这个错误

'C:/Program' is not recognized as an internal or external command, operable program or batch file.

Process finished with exit code 0

这让我相信 cmd 会做类似的事情:

cmd.exe,/c,c:/Program,Files/..

而不是

cmd.exe,/c,c:/program files/...

        String PathExe = "\"C:/Program Files/Minitab/Minitab 17/Minitab 17/Mtb.exe\"";
        String Macro = "\"c:/minitAPP/Import.mtb\"";

        ProcessBuilder builder;
        builder = new ProcessBuilder("cmd.exe", "/c", PathExe + " " + Macro);
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);

不需要使用cmd.exe来执行另一个.exe文件。直接执行即可,不带引号:

ProcessBuilder builder = new ProcessBuilder(
    "C:\Program Files\Minitab\Minitab 17\Minitab 17\Mtb.exe",
    "c:\minitAPP\Import.mtb");

通过将整个路径指定为 ProcessBuilder 的单个参数,您可以确保操作系统将其视为单个参数,这就是在普通命令行中使用引号的目的。