1

以下のコードを使用して、コマンドラインからコマンドを実行できます。動作するコマンドをコードに渡すと、処理されて戻り値が返されます。必要なのは、コマンドラインが正しく処理されないときにコマンドラインから応答を取得することです。したがって、コピーコマンドをプロンプトに渡して実行すると、値が取得されます。プロンプトにコピーコマンドを渡しても失敗すると、値が得られません。これが私のコードです

public String CommandLineExecuteReturn(String loc)
 {
    String returnValue = "";
    String outValue = null;
    try 
     {   
       Process p = Runtime.getRuntime().exec("cmd.exe /c "+ loc);   
       BufferedReader in = new BufferedReader(   
                           new InputStreamReader(p.getInputStream()));   
       String line = null;   
       while ((line = in.readLine()) != null) 
        {   
          ; 
           returnValue = line;
        }   
      } 
    catch (IOException e) 
      {   
        StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw));
        String stacktrace = sw.toString();
        returnValue = stacktrace;   
      }   

    return returnValue ;
 }
4

1 に答える 1

1

また、エラーストリームをリダイレクトする必要があります(p.getErrorStream())-両方のストリームから読み取るには2つのスレッドが必要になることに注意してください。

または、より簡単に、を使用してそのメソッドProcessBuilderを呼び出すことができます。redirectErrorStream(true)

この投稿も参照してください。

于 2013-03-26T18:57:08.277 に答える