2017-12-28 8 views
2

String[] cmdarrayProcess exec(String[] cmdarray)メソッドの中に格納できるものを具体性がどこにあるかわかりません。私はいくつかの場所を見つけたcmdarrayファイルやリモートサーバー名の配列コマンドや場所を格納する。だから、正確に私たちはString[] cmdarrayの中に格納することができますか?ドキュメントによれば正確にProcess.exec()の文字列配列の内部に格納できるもの

答えて

2

アレイの最初の要素は、コマンドです(cmdなど)。他は議論です。たとえば:

try { 
    Process p = Runtime.getRuntime().exec(new String[] {"cmd", "/c", "echo", "This", "is", "an", "argument"}); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    String s; 
    while((s = reader.readLine()) != null) { 
     System.out.println(s); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
ここ

"/c""echo""This""is""an"、および"argument"は、すべてのコマンドcmdの引数です。出力は次のとおりです。あなたが複数のコマンドを実行したい場合は

This is an argument 

は、あなたが別のコマンドを開始していることを示すために二重のアンパサンドを使用する必要があります。

はここ
try { 
    Process p = Runtime.getRuntime().exec(new String[] { "cmd", "/c", "echo", "This", "is", "an", "argument", 
      "&&", "echo", "this", "command", "snuck", "in" }); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    String s; 
    while ((s = reader.readLine()) != null) { 
     System.out.println(s); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

各コマンドがcmdに送信されています。私は肯定的ではありませんが、コマンドを他の場所に送る新しいプロセスを開始しなければならないと思います。出力は次のとおりです。

This is an argument 
this command snuck in 

詳細はこれを読む:次にhttps://stackoverflow.com/a/18867097/5645656

+0

、それは "CMD"、 "CMD" は、そのような "CMD" などのコマンドのリストになることができますか? – RLe

+0

はい、[この回答](https://stackoverflow.com/a/18867097/5645656)を見ると、二重のアンパサンドを追加すると、各コマンドの終わりが次の開始点になることがわかります。 –

+0

私の喜び! =) –

2

は、独立したプロセスで指定されたコマンドと引数を実行します。

これをJVM内のコマンドラインインターフェイスと見なしてください。 CMDを使用して呼び出すことができるすべてのプロセス名が必要です。たとえば、Ubuntuの文字列chromiumexecに渡すと、クロムが起動します。

関連する問題