13

次の行に沿って Java で実行する必要があるコマンドがあります。

    C:\path\that has\spaces\plink -arg1 foo -arg2 bar "path/on/remote/machine/iperf -arg3 hello -arg4 world"

このコマンドは、パスにスペースがない場合は正常に機能しますが、スペースがある場合は機能しないようです。Java 1.7を実行して、次のことを試しました

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf -arg3 hello -arg4 world"
Runtime.getRuntime().exec(a);

としても

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf", "-arg3 hello", "-arg4 world"
Runtime.getRuntime().exec(a);

しかし、どちらも何もしていないようです。私が間違っていることについて何か考えはありますか??

4

1 に答える 1

21

コマンドに渡す各引数は、別個の String 要素である必要があります。

したがって、コマンド配列は次のようになります...

String[] a = new String[] {
    "C:\path\that has\spaces\plink",
    "-arg1",
    "foo", 
    "-arg2",
    "bar",
    "path/on/remote/machine/iperf -arg3 hello -arg4 world"};

各要素は、programsargs変数の個々の要素として表示されるようになりました

ProcessBuilderまた、構成が簡単で、いくつかのコマンドをラップする必要がないため、代わりに使用することを強くお勧めします"\"...\""

于 2013-06-17T06:48:02.800 に答える