¿Cómo creo un cuadro de mensaje de cuenta regresiva demorable, que activa el archivo bat

Hola, estoy intentando crear un cuadro de mensaje con un botón "RETARDO". Si el usuario no presiona el botón Retraso, el script iniciará un archivo por lotes (o comando)

Entonces debería ir así:

Hola usuario Su administrador le ha solicitado que cierre la sesión de esta aplicación después del trabajo, hemos detectado que todavía está usando el programa, presione Retraso si todavía está en su máquina.

Idealmente, me gustaría que detecte cuándo un determinado programa está activo, y solo se active si está

Gracias

Aquí está la versión final.

@if (@CodeSection == @Batch) @then
@echo off
setlocal

for /f %%I in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo 0x07"') do set "beep=%%I"
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
setlocal
set "task=agent.exe"
set "timeout=120"
rem // Is %task% running?
tasklist /fi "imagename eq %task%" | find /i "%task%" >NUL && (

    rem // Re-launch script with JScript interpreter
    wscript /e:JScript /nologo "%~f0" %timeout% || (
        rem // If timeout or user hits No, kill %task%
        taskkill /im "%task%" /f
    )
)

rem // End main runtime

goto :EOF

rem // Begin JScript portion
@end
var osh = WSH.CreateObject('WScript.Shell'),
    nag = 'Greetings!  Your administrator has requested you to log out of Touchstar '
        + 'after work.  It appears you are still using it.'
        + ' If you are still here, Press Yes to continue working.\n\n'
        + 'Otherwise, press no to close touchstar.'
        + 'Touchstar will close automatically in less than ' + WSH.Arguments(0) + ' seconds.';
    popup = osh.Popup(nag, WSH.Arguments(0), 'Are you still here?', 0x4 + 0x20 + 0x1000);
WSH.Quit(popup - 6);

Gracias a todos los que ayudaron a crear esto (gran saludo a Rojo), y a todos los que respondieron.

Denslat

Respuestas a la pregunta(3)

Su respuesta a la pregunta