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

时间:2018-05-10 03:16:52

标签: java java-ee 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。这里的Process构建器将命令作为参数处理,除了第一个命令。也试过以下方法,但没有运气。

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

通过使用ProcessBuilder,我没有按顺序执行命令(一个接一个),我几乎花了3天但却找不到正确的方法。任何人都可以建议我实现同样的方法。

谢谢,

Sudheer

1 个答案:

答案 0 :(得分:2)

ProcessBuilder一次只能执行一个命令 - 正如您所发现的那样,当您传递一个字符串数组时,只将第一个字符串作为命令,其余字符串用作参数。

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

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

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