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
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.
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\\"));
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();
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));
}
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: &&
Cela fonctionnerait également.
Process process = new ProcessBuilder("C:\\Users\\test\\Downloads\\Termius.exe").start();
Il démarrerait le .exe dans cet emplacement de fichier.
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"));