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()) - 请注意,从两个流中读取都需要两个线程。

或者更容易,您可以使用 aProcessBuilder并调用它的redirectErrorStream(true)方法。

另见这篇文章

于 2013-03-26T18:57:08.277 回答