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 天但找不到正确的方法。任何人都可以建议我实现相同目标的方法吗?
谢谢,
苏德希尔
ProcessBuilder一次只会执行一个命令 - 正如您所发现的,当您向它传递一个字符串数组时,只有第一个字符串被视为命令,其余的被用作参数。
要执行多个命令,您需要ProcessBuilder为每个命令创建一个新命令。
为了确保多个命令按顺序运行,您必须确保一个命令在开始下一个命令之前完成,否则执行顺序将不确定。
执行此操作的方法是获取Process返回的对象ProcessBuilder.start()并使用其waitFor()方法等待每个命令完成。
| 归档时间: |
|
| 查看次数: |
3702 次 |
| 最近记录: |