一尘不染

从文件位置以Java运行.exe文件

java

我必须从我的Java程序中打开一个.exe文件。因此我首先尝试了以下代码。

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

但是我遇到了一些错误。然后我发现该exe必须从c:// program files / test
/的位置启动,然后才可以正常打开。因此,我决定编写一个.bat文件并执行,以便将其CD到该位置并执行.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文件退出后关闭。

当我的应用程序统计信息时,我需要单击命令提示符。

该程序写入后,我的.bat文件将如下所示。

cd\
cd C:\Program Files\test\
test.exe
exit

阅读 259

收藏
2020-09-08

共1个答案

一尘不染

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

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

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

  • 命令是.exe的位置
  • envp可以为null
  • dir,是您的.exe目录

关于您的代码应该是…

Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
2020-09-08