Подтвердить что ты не робот

Запустить файл .exe в Java из местоположения файла

Мне нужно открыть файл .exe из моей программы Java. Поэтому я попробовал следующий код First.

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

Но я получал некоторую ошибку. Затем я узнал, что exe должен быть запущен из этого местоположения, которое является c://программными файлами/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(Application). Он закрывается только после выхода EXE файла.

Мне нужно выполнить команду командной строки, когда моя статистика приложения.

Мой .bat файл будет выглядеть следующим образом после его написания программой.

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

Ответ 1

Вам не нужна консоль. Вы можете выполнить процесс, используя рабочий каталог:

exec (команда String, 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\\"));

Ответ 2

Вы можете использовать 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();

Ответ 3

Другим способом запуска файла является следующее:

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

Ответ 4

Стандартный код для запуска bat или любой другой через командную строку с использованием java:

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

и вы можете продолжить работу с несколькими файлами, используя и supperator, например: &&

Ответ 5

Лучший способ запуска 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"));