スケジューラまたはサービスを使用してプログラムを実行します。ただし、bat ファイルを使用してこれをプログラムで実行する場合は、以下に考えられるアプローチの概要を示します。
Java プログラムでは、プログラムによって PID を取得し、それをファイルに書き込むことができます。
public static void writePID(String fileLocation) throws IOException
{
// Use the engine management bean in java to find out the pid
// and to write to a file
if (fileLocation.length() == 0)
{
fileLocation = DEFAULT_PID_FILE;
}
String pid = ManagementFactory.getRuntimeMXBean().getName();
if (pid.indexOf("@") != -1)
{
pid = pid.substring(0, pid.indexOf("@"));
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileLocation));
writer.write(pid);
writer.newLine();
writer.flush();
writer.close();
}
その後、Windows で実行中のプログラムを強制終了する stop .bat ファイルを作成できます。次のようなことができます:
setlocal
IF EXIST app.pid FOR /F %%i in ('type app.pid') do TASKKILL /F /PID %%i
IF EXIST app.pid DEL app.pid
endlocal
もちろん、app.pid は上記の Java メソッドによって書き込まれたファイルです。
Java プログラムを起動し、終了時に制御を戻すスクリプトをどのように作成できるかわかりません。誰かがそれに対する解決策を持っているかどうかを知りたいです。