web-dev-qa-db-fra.com

Exécutez le fichier .exe dans Java à partir de l'emplacement du fichier

Je dois ouvrir un fichier .exe à partir de mon programme Java. J'ai donc essayé de suivre le code d'abord.

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

Mais je recevais une erreur. Ensuite, j'ai découvert que l'exe doit être lancé à partir de cet emplacement qui est c: // program files/test/seulement alors il s'ouvrira sans erreurs. J'ai donc décidé d'écrire un fichier .bat et de l'exécuter pour qu'il se place à cet emplacement et exécute le fichier .exe.

Voici mon 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();
    }

Le code ci-dessus fonctionne parfaitement. Cependant, l'invite de commande est également ouverte à l'arrière de mon .exe (Application). Il se ferme uniquement après la fermeture du fichier .exe.

Je dois clse ma commande invite lorsque mes statistiques d'application.

Mon fichier .bat sera comme suit après avoir été écrit par le programme.

cd\
cd C:\Program Files\test\
test.exe
exit
18
Dilip Rajkumar

Vous n'avez pas besoin d'une console. Vous pouvez exécuter un processus à l'aide d'un répertoire de travail:

exec (commande String, chaîne [] envp, répertoire fichier)

Exécute la commande de chaîne spécifiée dans un processus distinct avec l'environnement et le répertoire de travail spécifiés.

  • est l'emplacement du fichier .exe
  • envp peut être nul
  • dir, est le répertoire de votre .exe

En ce qui concerne votre code, il devrait être ...

Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
19
Schifty

Vous pouvez utiliser Runtime.exec (Java.lang.String, Java.lang.String [], Java.io.File) où vous pouvez définir le répertoire de travail.

Ou bien vous pouvez utiliser ProcessBuilder comme suit:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
pb.directory(new File("myDir"));
Process p = pb.start();
11
Kuldeep Jain

Une autre façon d'exécuter un fichier est la suivante:

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));
}
7
BullyWiiPlaza

Le code standard pour l'exécution de chauve-souris ou de tout autre ligne de commande en utilisant Java est:

runtimeProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\""+backup_path+"\"");
int processComplete = runtimeProcess.waitFor();

et vous pouvez continuer pour plusieurs fichiers en utilisant & supperator comme: &&

4
Shaikh Arbaaz

Cela fonctionnerait également.

 Process process = new ProcessBuilder("C:\\Users\\test\\Downloads\\Termius.exe").start();

Il démarrerait le .exe dans cet emplacement de fichier.

2
Ifesinachi Bryan

Meilleure façon d'exécuter un fichier exe

faire objet Java.awt.Desktop et égal Desktop.getDesktop ();

Desktop desktop = Desktop.getDesktop();desktop.open("file path");

exécutez le fichier exe:

desktop.open("C:\\Windows\\System32\\cmd.exe");

ou

desktop.open("C:/Windows/System32/cmd.exe");

exécutez l'url:

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