从文件位置运行Java中的.exe文件
我必须从我的Java程序打开一个.exe文件。 所以我试着下面的代码第一。
Process process = runtime.exec("c:\\program files\\test\\test.exe");
但是我得到了一些错误。 然后我发现exe文件必须从c:\ program files / test /这个位置启动,只有这样它才会打开而不会出错。 所以我决定编写一个.bat文件并执行,以便它能够切换到该位置并执行.exe文件。
以下是我的代码:
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(); }
上面的代码完美地工作。 但是,命令提示符也打开在我的.exe(应用程序)的后面。 它仅在.exe文件退出后closures。
当我的应用程序统计信息时,我需要隐藏我的命令提示符。
在程序写入后,我的.bat文件将如下图所示。
cd\ cd C:\Program Files\test\ test.exe exit
你不需要控制台。 您可以使用工作目录执行进程:
exec(string命令,string[] envp,文件目录)
使用指定的环境和工作目录在单独的进程中执行指定的string命令。
- 命令是.exe的位置
- envp可以为null
- 目录,是你的.exe的目录
关于你的代码,应该是…
Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
你可以使用Runtime.exec(java.lang.String,java.lang.String [],java.io.File)来设置工作目录。
否则,您可以使用ProcessBuilder ,如下所示:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); pb.directory(new File("myDir")); Process p = pb.start();
运行文件的另一种方式如下:
import java.awt.Desktop; import java.io.File; public static void open(String targetFilePath) throws IOException { Desktop desktop = Desktop.getDesktop(); desktop.open(new File(targetFilePath)); }
使用java运行蝙蝠或任何其他命令行的标准代码是:
runtimeProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\""+backup_path+"\""); int processComplete = runtimeProcess.waitFor();
你可以使用&supperator继续多个文件:&&
运行exe文件的最佳方法
使java.awt.Desktop对象和等于Desktop.getDesktop();
Desktop desktop = Desktop.getDesktop();
desktop.open("file path");
运行exe文件:
desktop.open("C:\\Windows\\System32\\cmd.exe");
要么
desktop.open("C:/Windows/System32/cmd.exe");
运行url:
desktop.browse(new URI("http://www.google.com"));