【问题标题】:How to execute commands in sequence using Processbuilder如何使用 Processbuilder 按顺序执行命令
【发布时间】:2018-05-10 11:41:08
【问题描述】:

我想使用 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 天时间,但找不到正确的方法。任何人都可以建议我实现相同的方法。

谢谢,

苏迪尔

【问题讨论】:

    标签: java jakarta-ee processbuilder


    【解决方案1】:

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

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

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

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

    【讨论】:

    • Sudheer,如果 kshetline 的回答对您的问题有所帮助,请务必接受他们的回答。
    • @Kshetline 非常感谢!!很好的解释,你的回答解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2014-03-14
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多