CommandLine在Java中使用ProcessBuilder和程序之间的管道

时间:2014-06-25 14:39:33

标签: java command-line processbuilder

我希望从Javas的ProcessBuilder(在Windows中)运行以下Unix命令。

$ gensky 1 21 11 | genskyvec -m 1 > skyvec_1-21-11_1.skv

所以我写了这个:

String cmd = String.format("C:\\Radiance4.2\\bin\\gensky 1 21 11 | %s -m 1 > %s\n", "C:\\Radiance4.2\\bin\\genskyvec", "C:\\Radiance4.2\\temp\\output_test.skv");

而且:

ProcessBuilder builder = new ProcessBuilder(cmd);
builder.redirectErrorStream(true);                  
Process process = null;
try {
    process = builder.start();
    System.out.println("Started Processing!");
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

但是继续得到错误 - 找不到该程序。我有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用directory()将工作目录设置为C:\\Radiance4.2\\bin\\并传递List<String>

列出cmd = new ArrayList(); cmd.add( “genskyvec”); cmd.add( “1”); cmd.add( “21”); cmd.add( “11”); //所有参数

并使用redirectOutput()来传递>

相关问题