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
コンソールは必要ありません。作業ディレクトリを使用してプロセスを実行できます。
exec(文字列コマンド、文字列[] envp、ファイルディレクトリ)
指定された環境と作業ディレクトリを使用して、指定された文字列コマンドを別のプロセスで実行します。
あなたのコードに関しては...
Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
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();
ファイルを実行する別の方法は次のとおりです。
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));
}
Javaを使用してコマンドラインでbatまたはその他を実行するための標準コードは
runtimeProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\""+backup_path+"\"");
int processComplete = runtimeProcess.waitFor();
&supperatorを使用して複数のファイルを続行できます:&&
これも機能します。
Process process = new ProcessBuilder("C:\\Users\\test\\Downloads\\Termius.exe").start();
そのファイルの場所で.exeを起動します。
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"));