Java 如何使用process builder运行两个不同的命令

Java 如何使用process builder运行两个不同的命令,java,command-prompt,processbuilder,Java,Command Prompt,Processbuilder,抱歉,如果我再次打开相同的问题。我想运行两个命令 D:\cygwin\bin\Test sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件 上面是我希望在同一命令提示符下运行的两个命令,这意味着我必须进入D:\cygwin\bin\Test文件夹,并在同一提示符下运行下一个命令 sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件 命令看起来像 命令:-D:\cygwin\bin\Test>sh app.sh AK-RD

抱歉,如果我再次打开相同的问题。我想运行两个命令

  • D:\cygwin\bin\Test

  • sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件

  • 上面是我希望在同一命令提示符下运行的两个命令,这意味着我必须进入D:\cygwin\bin\Test文件夹,并在同一提示符下运行下一个命令

    sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件

    命令看起来像

    命令:-D:\cygwin\bin\Test>sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件

    如何在java中使用process Builder实现这一点。或者有没有其他方法可以做到这一点

    String cmd;   
       cmd = "sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files";
        ProcessBuilder probuilder = new ProcessBuilder( cmd );
        probuilder.directory(new File("D:\\cygwin\\bin\\Test"));
        Process process = probuilder.start();
    
    这对我没有帮助,即使我在代码中更改了
    probuilder.directory
    。我越来越

    Cannot run program "'sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files  CreateProcess error=2, The system cannot find the file specified
    
    你可以打电话

    ProcessBuilder pb = new ProcessBuilder();
    pd.directory(new File("D:\\cygwin\\bin\\Test"));
    
    设置工作目录

    编辑:

    您还可以尝试将命令拆分为参数

    String cmd[] = new String[5];
    cmd[0] = "sh";
    cmd[1] = "app.sh";
    cmd[2] = "AK-RD";
    cmd[3] = "02.20";
    cmd[4] = "D:\\cygwin\\bin\\Test_files";
    

    该错误表示系统无法在路径中找到文件
    sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test\u files.exe

    这意味着
    ProcessBuilder
    将整个字符串(包括反斜杠、空格和所有内容)解释为命令名。这不是你想要的

    将命令拆分为单个单词:

    ProcessBuilder pb = new ProcessBuilder( "sh", "app.sh", "AK-RD", "02.20", "D:\\cygwin\\bin\\Test_files" );
    
    并使用
    pb.directory()
    CD
    进入正确的目录


    或者,将所有内容放入一个BAT/CMD脚本中,并使用
    ProcessBuilder运行该脚本

    你能告诉它应该是什么样的吗?因为我得到了错误CreateProcess Error=2,系统找不到指定的文件。我在没有将命令拆分为参数时看到了一些奇怪的行为。拆分对你有用吗?还是没有爱?