DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Java (http://www.daniweb.com/forums/forum9.html)
-   -   Executing dos commands in Java (http://www.daniweb.com/forums/thread37743.html)

Rajnesh Jan 8th, 2006 4:23 pm
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.

server_crash Jan 8th, 2006 4:52 pm
Re: Executing dos commands in Java
 
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?

Rajnesh Jan 8th, 2006 5:07 pm
Re: Executing dos commands in Java
 
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");
}
}
-------------------------------------------------

jwenting Jan 9th, 2006 7:20 am
Re: Executing dos commands in Java
 
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).

Rajnesh Jan 9th, 2006 10:41 pm
Re: Executing dos commands in Java
 
Could you please explain the steps...of what you said because I tried and i think m not on the right track.....

Rajnesh Jan 11th, 2006 5:11 pm
Re: Executing dos commands in Java
 
Could you forwrd me tha whole prog as i did what you told, while no error is there, but no output is given

jwenting Jan 12th, 2006 4:35 am
Re: Executing dos commands in Java
 
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).

aruntells Jan 15th, 2009 4:26 am
Re: Executing dos commands in Java
 
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) {

prianka Nov 16th, 2009 9:50 am
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");
}
}
}


All times are GMT -4. The time now is 2:47 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC