Tente isto:
powercfg -lastwake | findstr /I /C:"Type:"
if %errorlevel% == 0 (
echo woken up by something
) else (
echo woken up unexpectedly
)
Em suma, apenas procura Type:
na saída de powercfg -lastwake
e, se não existir, assume que a máquina acordou inesperadamente.
Se você quiser realmente fazer a máquina voltar a dormir, substitua o segundo echo
pelo seguinte:
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
Lembre-se de que seu computador pode entrar em um loop onde é ativado, executa esse script, volta a adormecer, ativa, executa esse script, volta a dormir e assim por diante.