Можно ли как-то обработать закрытие bat файла? Установить код, выполняемый при закрытии батника

В Android есть метод onDestroy(), отслеживающий конец жизненного цикла активности/приложения. Можно ли что-то подобное провернуть с батниками? Пример: пользователь закрывает запущенный .bat-файл, а тот после закрытия выполняет какой-либо код. Ну скажем отправляет msgbox с сообщением о том, что работа батника была завершена.


Ответы (2 шт):

Автор решения: Alexey Vesker

Для этого можно добавить в конец батника такой код:

echo off
echo x=msgbox("Работа завершена" ,64, "Title") >> msgbox.vbs
start msgbox.vbs

Решение, подсмотрено здесь.

→ Ссылка
Автор решения: denisnumb

Решил проблему! У меня есть чат, написанный на bat, для общения в локальной сети. Отследить закрытие файла нужно было для того, чтобы когда пользователь закрывает консоль отправки сообщений, в общий чат приходило уведомление о том, что пользователь покинул чат.

Решение:

Как писали выше, самое логичное, что можно сделать - это написать второй батник, который будет следить за жизненным циклом первого. Это работает таким образом:

  1. Указываем заголовок окна процесса за которым будет следить скрипт:

  2. В цикле постоянно отправляем запрос на получение PID (ID процесса) с таким заголовком, до тех пор, пока значение PID не станет равным "Задачи,". Это происходит в том случае, если процесс не обнаружен. TaskList возвращает текст "Задачи, отвечающие заданным критериям отсутствуют"

Код:

@echo off
chcp 1251

set titlename=just

:GetPID
for /f "tokens=2" %%A in ('tasklist /fi "windowtitle eq %titlename%"^|Find "."') do (set PID=%%A)

if %PID%==Задачи, (echo Процесс был завершен)

goto GetPID
→ Ссылка