12

Possible Duplicate:
Get output from a process
Executing DOS commands from Java

I am trying to run a cmd command from within a JAVA console program e.g.:

ver

and then return the output of the command into a string in JAVA e.g. output:

string result = "Windows NT 5.1"
2

4 Answers 4

31

You can use the following code for this

import java.io.*; 

    public class doscmd 
    { 
        public static void main(String args[]) 
        { 
            try 
            { 
                Process p=Runtime.getRuntime().exec("cmd /c dir"); 
                p.waitFor(); 
                BufferedReader reader=new BufferedReader(
                    new InputStreamReader(p.getInputStream())
                ); 
                String line; 
                while((line = reader.readLine()) != null) 
                { 
                    System.out.println(line);
                } 

            }
            catch(IOException e1) {e1.printStackTrace();} 
            catch(InterruptedException e2) {e2.printStackTrace();} 

            System.out.println("Done"); 
        } 
    }
Sign up to request clarification or add additional context in comments.

Comments

5

You can use Runtime exec in java to execute dos commands from java code.

Based on Senthil's answer here:

Process p = Runtime.getRuntime().exec("cmd /C ver");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()),8*1024);

BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

// read the output from the command

String s = null;
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) 
System.out.println(s.replace("[","").replace("]",""));

Output = Microsoft Windows Version 6.1.7600

Comments

2

You can do something like:

String line;
Process p = Runtime.getRuntime().exec ("ver");
BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader error =new BufferedReader(new InputStreamReader(p.getErrorStream()));

System.out.println("OUTPUT");
while ((line = input.readLine()) != null)
  System.out.println(line);
input.close();

System.out.println("ERROR");
while ((line = error.readLine()) != null)
  System.out.println(line);
error.close();

On comment of @RanRag, the main issue is Windows versus Unix/Mac.

  • WINDOWS: exec("cmd /c ver");
  • UNIX FLAVOUR: exec("ver");

1 Comment

You need to call exec with Process p = Runtime.getRuntime().exec("cmd /C ver");.
1

Have a look at java.lang.Runtime or, better yet, java.lang.Process

This might help you get started.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.