Run .exe file in Java from file location
batch-file, bufferedreader, exe, java, windows
Solution
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\\"));
Problem
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 ```