Search code examples
javawindowscommand-lineprocessbuilder

Java run Windows command line command returning a value


I would like to run a windows command line command from java and return the result into java. Is this possible?

for example, I would like to do the following

Object returnValue = runOnCommandLine("wmic cpu get LoadPercentage"); //In this case, returnValue is the cpu load percent as a String

Edit: I was able to get this working

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

Solution

  • Data you need is 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   
        }