Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run .exe file in Java from file location

Tags:

I have to open a .exe file from my Java program. So I tried following code First.

Process process = runtime.exec("c:\\program files\\test\\test.exe");

But I was getting some error. Then I found out that the exe has to be launched from that location that is c://program files/test/ only then it will open with out errors. So I decided to write a .bat file and execute so that it will cd to that location and execute the .exe file.

Following is my code:

BufferedWriter fileOut;

String itsFileLocation = "c:\\program files\\test\\"
    System.out.println(itsFileLocation);
    try {
     fileOut = new BufferedWriter(new FileWriter("C:\\test.bat"));
     fileOut.write("cd\\"+"\n");
     fileOut.write("cd "+ itsFileLocation +"\n");
     fileOut.write("test.exe"+"\n");
     fileOut.write("exit"+"\n");
     
     fileOut.close(); // Close the output stream after all output is done.
    } catch (IOException e1) {
     e1.printStackTrace();
    } // Create the Buffered Writer object to write to a file called filename.txt
    Runtime runtime = Runtime.getRuntime();
    try {
     Process process =runtime.exec("cmd /c start C:\\test.bat");
    } catch (IOException e) {
     e.printStackTrace();
    }

The above code works perfectly. However, the command prompt is also opened at the back of my .exe (Application). It closes only after the .exe file exits..

I need to clse my command prompt when my application stats.

My .bat file will be like following after it is written by the program.

cd\
cd C:\Program Files\test\
test.exe
exit
like image 426
Dilip Rajkumar Avatar asked May 21 '12 13:05

Dilip Rajkumar


People also ask

How do I run a Windows program from Java?

bat file, all you have to do is execute cmd.exe and pass the batch file name in the /C option. Note that when you run a batch file you are starting a DOS cmd processor and telling it to run the batch file instead of reading from the terminal.

How do I run a .EXE file?

Running EXE Files (Windows) Double-click an EXE file to run it. EXE files are Windows executable files, and are designed to be run as programs. Double-clicking any EXE file will start it.


2 Answers

You don't need a console. You can execute a process using a working directory:

exec(String command, String[] envp, File dir)

Executes the specified string command in a separate process with the specified environment and working directory.

  • command is the location of the .exe
  • envp can be null
  • dir, is the directory of your .exe

With respect to your code it should be...

Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
like image 199
Schifty Avatar answered Nov 03 '22 21:11

Schifty


You can use Runtime.exec(java.lang.String, java.lang.String[], java.io.File) where you can set the working directory.

Or else you can use ProcessBuilder as follows:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
pb.directory(new File("myDir"));
Process p = pb.start();
like image 42
Kuldeep Jain Avatar answered Nov 03 '22 19:11

Kuldeep Jain