如何使用流程构建器运行两个不同的命令

时间:2012-02-14 06:50:11

标签: java command-prompt processbuilder

很抱歉,如果我再次重新打开同一个问题。我想运行两个命令

  1. d:\ cygwin的\ BIN \测试

  2. sh app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files

  3. 以上是我想在同一命令提示符下运行的两个命令意味着我必须进入 D:\ cygwin \ bin \ Test 文件夹并在同一提示符下想要运行下一个命令< / p>

    sh app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files

    命令看起来像,

    命令: - D:\ cygwin \ bin \ Test&gt; sh app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files

    如何在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
    

2 个答案:

答案 0 :(得分:0)

你可以打电话

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";

答案 1 :(得分:0)

错误表示系统无法在路径中找到文件sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_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

运行该脚本