@echo off
setlocal EnableExtensions EnableDelayedExpansion

:: ================================
:: PARAR.bat - encerra AjusteEstoque.exe
:: Uso: PARAR.bat [NomeDoExe]
:: Ex.: PARAR.bat              -> usa AjusteEstoque.exe
::      PARAR.bat MeuApp.exe   -> usa MeuApp.exe
:: ================================

:: Nome do EXE (padrão)
set "EXE=%~1"
if not defined EXE set "EXE=AjusteEstoque.exe"

:: Log ao lado do BAT
set "LOG=%~dp0PARAR_%EXE%.log"

:: --- Checa se tem permissão de admin; se não, relança elevado ---
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo Solicitando permissao de administrador...
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
        "Start-Process -FilePath '%~f0' -ArgumentList '%EXE%' -Verb RunAs"
    exit /b
)

call :ts >> "%LOG%"
echo ==== PARAR: %EXE% ==== >> "%LOG%"

:: Verifica se esta rodando
tasklist /FI "IMAGENAME eq %EXE%" | find /I "%EXE%" >nul
if errorlevel 1 (
    echo %EXE% nao esta em execucao.
    echo %date% %time% - Nao encontrado >> "%LOG%"
    goto :eof
)

echo Tentando encerrar suavemente %EXE%...
taskkill /IM "%EXE%" /T >nul 2>&1

:: Aguarda ate 15s para finalizar sozinho
for /l %%s in (1,1,15) do (
    timeout /t 1 /nobreak >nul
    tasklist /FI "IMAGENAME eq %EXE%" | find /I "%EXE%" >nul
    if errorlevel 1 goto :stopped
)

echo Forcando encerramento de %EXE%...
taskkill /IM "%EXE%" /T /F >nul 2>&1

:stopped
tasklist /FI "IMAGENAME eq %EXE%" | find /I "%EXE%" >nul
if errorlevel 1 (
    echo %EXE% finalizado.
    echo %date% %time% - Finalizado >> "%LOG%"
) else (
    echo Nao foi possivel finalizar %EXE%.
    echo %date% %time% - Falha ao finalizar >> "%LOG%"
    exit /b 1
)

exit /b 0

:ts
echo %date% %time%
exit /b
