我可以使用以下代码从命令行执行命令。如果将一个工作命令传递给它处理的代码并给我一个返回值。我需要的是在命令行无法正确处理时从命令行获取响应。因此,如果我将复制命令传递给提示并执行,我会得到一个值。如果我将复制命令传递给提示并且它失败,我就没有任何价值。这是我的代码
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 ;
}
答案 0 :(得分:1)
您还需要重定向错误流(p.getErrorStream()
) - 请注意,从两个流中读取将需要两个线程。
或者更容易,您可以使用ProcessBuilder
并调用其redirectErrorStream(true)
方法。
另见this post。