web-dev-qa-db-ja.com

ファイルの場所からJavaで.exeファイルを実行します

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
18
Dilip Rajkumar

コンソールは必要ありません。作業ディレクトリを使用してプロセスを実行できます。

exec(文字列コマンド、文字列[] envp、ファイルディレクトリ)

指定された環境と作業ディレクトリを使用して、指定された文字列コマンドを別のプロセスで実行します。

  • commandは.exeの場所です
  • envpはnullにできます
  • dirは、.exeのディレクトリです

あなたのコードに関しては...

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

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();
11
Kuldeep Jain

ファイルを実行する別の方法は次のとおりです。

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

Javaを使用してコマンドラインでbatまたはその他を実行するための標準コードは

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

&supperatorを使用して複数のファイルを続行できます:&&

4
Shaikh Arbaaz

これも機能します。

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

そのファイルの場所で.exeを起動します。

2

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