如何使用 Processbuilder 按顺序执行命令

How to execute commands in sequence using Processbuilder

我想使用 Java Process Builder 在 windows 操作系统中执行 2 个命令(一个是批处理文件,另一个是 python 脚本)。但不幸的是无法做到这一点。我试了很多方法。

List<String> commands = new ArrayList<String>();
                commands.add("Testbatch.bat");
                commands.add("Python.exe");
                commands.add("TestPythonScript.py");
                ProcessBuilder probuilder = new ProcessBuilder(commands);
                Process process = probuilder.start();

这里它正在执行批处理文件,而不是 python。这里进程构建器将命令视为除第一个命令之外的参数。也尝试了以下方法,但没有成功。

String [] commands={"CMD","/C","Testbatch.bat","Python.exe","TestPythonScript.py"};
ProcessBuilder probuilder = new ProcessBuilder(commands);
Process process = probuilder.start();

使用 ProcessBuilder 按顺序(一个接一个)执行命令对我来说毫无用处,我几乎花了 3 天时间,但找不到正确的方法。任何人都可以建议我实现相同的方法。

谢谢,

苏德赫尔

ProcessBuilder 一次只会执行一个命令——正如您所发现的,当您向它传递一个字符串数组时,只有第一个字符串被用作命令,其余的用作参数。

要执行多个命令,您需要为每个命令创建一个新的 ProcessBuilder

为了确保多个命令 运行 顺序,您必须确保一个命令在开始下一个命令之前完成,否则执行顺序将不确定。

你这样做的方法是获取ProcessBuilder.start()返回的Process对象并使用它的waitFor()方法等待每个命令完成。