Java类返回windows命令行信息

时间:2013-03-26 18:52:57

标签: java command-line

我可以使用以下代码从命令行执行命令。如果将一个工作命令传递给它处理的代码并给我一个返回值。我需要的是在命令行无法正确处理时从命令行获取响应。因此,如果我将复制命令传递给提示并执行,我会得到一个值。如果我将复制命令传递给提示并且它失败,我就没有任何价值。这是我的代码

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 ;
 }

1 个答案:

答案 0 :(得分:1)

您还需要重定向错误流(p.getErrorStream()) - 请注意,从两个流中读取将需要两个线程。

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

另见this post