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

use*_*393 3 java processbuilder jakarta-ee

我想使用 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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢,

苏德希尔

ksh*_*ine 6

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

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

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

执行此操作的方法是获取Process返回的对象ProcessBuilder.start()并使用其waitFor()方法等待每个命令完成。