【问题标题】:Java run Windows command line command returning a valueJava 运行 Windows 命令行命令返回一个值
【发布时间】:2013-01-22 04:40:15
【问题描述】:

我想从 java 运行 windows 命令行命令并将结果返回到 java。这可能吗?

例如,我想做以下事情

Object returnValue = runOnCommandLine("wmic cpu get LoadPercentage"); //在这种情况下,returnValue 是字符串形式的 cpu 负载百分比

编辑:我能够让它工作

InputStream inputStream = new ProcessBuilder("wmic", "cpu", "get", "status").start().getInputStream();
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer);
String theString = writer.toString();
System.out.println("My string: " + theString);

【问题讨论】:

标签: java windows command-line processbuilder


【解决方案1】:

您需要的数据是 commandOutput。

    String cmd = "wmic cpu get LoadPercentage";
    ProcessBuilder pb = new ProcessBuilder(cmd);
    pb.redirectErrorStream(true);
    Process p = pb.start();
    BufferedReader stdin = new BufferedReader(
                          new InputStreamReader(p.getInputStream()));
    StringBuilder commandOutput = new StringBuilder();
    String line;
    while ((line = stdin.readLine()) != null) {
      commandOutput.append(line);
    }
    int exitValue = -1;
    try {
     exitValue = p.waitFor();
    } catch (InterruptedException e) {
    // do something here   
    }

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

            Process proc = Runtime.getRuntime().exec("net start");          
            InputStreamReader isr = new InputStreamReader(proc.getInputStream());
            BufferedReader br = new BufferedReader(isr);
    
            String temp = null;
            while (( temp = br.readLine() ) != null)
                   System.out.println(temp);
    

    【讨论】:

      【解决方案3】:

      看看 ProcessBuilder。

      使用低于 Java 1.5 Runtime.getRuntime().exec(...)。

      【讨论】:

      • 更易于使用 ProcessBuilder - 解决了人们使用 Runtime#exec 时常犯的许多错误 - 恕我直言
      • @MadProgrammer 看来甲骨文在文档中说了同样的话。 ProcessBuilder 在 1.5 及以上版本中是首选。感谢您的信息。
      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 2020-06-11
      相关资源
      最近更新 更多