21

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
4

6 に答える 6

26

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

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\\"));
于 2012-05-21T13:18:50.190 に答える
13

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();
于 2012-05-21T13:16:28.630 に答える
7

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

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));
}
于 2015-08-25T12:27:19.257 に答える
5

javaを使用してbatまたはその他のコマンドラインを実行するための標準コードは次のとおりです。

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

そして、次のような&separatorを使用して複数のファイルを続行できます:&&

于 2015-07-30T08:45:11.653 に答える
4

これも機能します。

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

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

于 2018-09-29T17:38:24.623 に答える
0

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

于 2017-05-12T18:11:11.067 に答える