Я бы пошел для запуска программы с помощью планировщика или службы.Однако, если вы хотите использовать bat-файл и делать это программно, я обрисовал в общих чертах возможный подход ниже:
В вашей Java-программе вы можете получить PID программно, а затем записать его в файл:1003 *
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();
}
Затем вы можете написать файл остановки .bat, который убьет работающую программу в Windows.Вы можете сделать что-то вроде:
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-программу и отменяет контроль при завершении.Мне было бы интересно узнать, есть ли у кого-нибудь решение для этого.