从文件位置运行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 

Solutions Collecting From Web of "从文件位置运行Java中的.exe文件"

你不需要控制台。 您可以使用工作目录执行进程:

exec(字符串命令,字符串[] envp,文件目录)

使用指定的环境和工作目录在单独的进程中执行指定的字符串命令。

  • 命令是.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");

运行网址:

desktop.browse(new URI("http://www.google.com"));