1

Dear all,
Could you tell me how to go about executing MSDOS commands thru Java. I tried with the Process class but it gives an error:2.
Could anyone please advise.

7
Contributors
10
Replies
25
Views
11 Years
Discussion Span
Last Post by stultuske
0

You should be able to use Process:

Process p = Runtime.getRuntime().exec(command);

command is a string you pass.


What's the error you're recieving?

0

The error says:

Exception in thread "main" java.io.IOException: CreateProcess: start error=2
        at java.lang.Win32Process.create(Native Method)
        at java.lang.Win32Process.<init>(Unknown Source)
        at java.lang.Runtime.execInternal(Native Method)
        at java.lang.Runtime.exec(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at Dos.main(Dos.java:5)

The program is:

import java.io.*;

public class Dos{
    public static void main(String[] args) throws IOException{
        Process p = Runtime.getRuntime().exec("start");
    }
}

Edited by pyTony: fixed formating

0

You will need to start a command interpreter in order to launch operating system level commands.
Under win32 that's done using the "cmd" command.
For example "cmd dir" would execute a dir command.

The entire system is rather tricky, I've never really gotten the hang of it (but then I've never tried to, preferring to keep my code operating system independent).

0

Could you please explain the steps...of what you said because I tried and i think m not on the right track.....

0

Could you forwrd me tha whole prog as i did what you told, while no error is there, but no output is given

0

I've done a bit more R&D (you got me interested ;) ), turns out it's trickier than it looks because you need to start a process and then start a process in that process and catch the output of that sub process.

As a minimum you'd end up with something like this (for a simple dir command):

String[] command =  new String[4];
          command[0] = "cmd";
          command[1] = "/C";
          command[2] = "dir";
          command[3] = "c:\\";
          Process p = Runtime.getRuntime().exec(command);
          BufferedReader stdInput = new BufferedReader(new 
               InputStreamReader(p.getInputStream()));

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

          // read any errors from the attempted command

          System.out.println("Here is the standard error of the command (if any):\n");
          while ((s = stdError.readLine()) != null) {
              System.out.println(s);
          }

Forget the /C option (as I initially did) and it will only start a command shell and just sit there forever waiting for that to terminate (which it won't as there's nothing ever telling it to close).

-3

Hi Friend,
Please find the sample code below.

Runtime r = Runtime.getRuntime();
Process p = r.exec("cmd");

BufferedReader in = new BufferedReader(new
            InputStreamReader(p.getInputStream()));
String inputLine="" ;
            while ((inputLine = in.readLine()) != null) 

Edited by pritaeas: Fixed formatting

Comments
not really adding anythin, reviving a dead thread, not following forum standards, .. take your pick
Unnecessarily reviving an ancient thread
0
import java.io.*;

public class Dos
{
public static void main(String[] args)
{
	try
          {
		String[] command =  new String[4];
          command[0] = "cmd";
          command[1] = "/C";
          command[2] = "del";
          command[3] = "d:\\a.txt";

          Process p = Runtime.getRuntime().exec(command);

          BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
 
          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);
          }
 
          // read any errors from the attempted command
 
          System.out.println("Here is the standard error of the command (if any):\n");
          while ((s = stdError.readLine()) != null) {
              System.out.println(s);
          }
		System.out.println("I am In try");
	  }


	catch(Exception e){  
				System.out.println("I am In catch");
			 }
}
}

Edited by Nick Evan: Added code-tags

0

its giving error:2.
Can any one help on this

step 1: formulate a question
step 2: start a new thread rather than reviving one that has been dormant (not to say dead) for over years
step 3: give a wee bit more information about what you're doing...

whát are you trying? whát is giving error:2
...

hope this can help you get started.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.