954,523 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Executing dos commands in Java

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.

Rajnesh
Newbie Poster
24 posts since Jan 2006
Reputation Points: 10
Solved Threads: 1
 

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?

server_crash
Postaholic
2,111 posts since Jun 2004
Reputation Points: 113
Solved Threads: 20
 

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.(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");
}
}
-------------------------------------------------

Rajnesh
Newbie Poster
24 posts since Jan 2006
Reputation Points: 10
Solved Threads: 1
 

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

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 

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

Rajnesh
Newbie Poster
24 posts since Jan 2006
Reputation Points: 10
Solved Threads: 1
 

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

Rajnesh
Newbie Poster
24 posts since Jan 2006
Reputation Points: 10
Solved Threads: 1
 

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

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 

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

aruntells
Newbie Poster
1 post since Jan 2009
Reputation Points: 8
Solved Threads: 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");
			 }
}
}
prianka
Newbie Poster
1 post since Nov 2009
Reputation Points: 10
Solved Threads: 0
 

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

prathimat
Newbie Poster
1 post since Dec 2011
Reputation Points: 10
Solved Threads: 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.

stultuske
Posting Sensei
3,137 posts since Jan 2007
Reputation Points: 1,114
Solved Threads: 433
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You