@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: Путь, куда скрипт временно выгрузит VBS код
set "VBS_FILE=%TEMP%\NoSleep_Hidden.vbs"
echo =========================================
echo Управление NoSleep (Один файл)
echo =========================================
:: Проверяем, запущен ли скрипт в данный момент
powershell -NoProfile -Command "$p = Get-CimInstance Win32_Process -Filter \"Name='wscript.exe'\"; if ($p -and ($p.CommandLine -match 'NoSleep_Hidden.vbs')) { exit 1 } else { exit 0 }"
if %errorlevel% equ 1 (
echo [!] Процесс найден. Отключаем скрипт...
:: Убиваем процесс
powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter \"Name='wscript.exe'\" | Where-Object {$_.CommandLine -match 'NoSleep_Hidden.vbs'} | Invoke-CimMethod -MethodName Terminate" >nul 2>&1
:: Удаляем временный файл для чистоты (необязательно, но аккуратно)
if exist "%VBS_FILE%" del "%VBS_FILE%"
color 0C
echo.
echo NoSleep ДЕАКТИВИРОВАН.
timeout /t 2 >nul
) else (
echo [>] Процесс не найден. Запускаем...
:: Генерируем VBS-код прямо из этого батника в папку Temp
echo Set objShell = WScript.CreateObject^("WScript.Shell"^) > "%VBS_FILE%"
echo Do While True >> "%VBS_FILE%"
echo WScript.Sleep 240000 >> "%VBS_FILE%"
echo objShell.SendKeys "{F13}" >> "%VBS_FILE%"
echo Loop >> "%VBS_FILE%"
:: Скрыто запускаем созданный VBS
start wscript.exe "%VBS_FILE%"
color 0A
echo.
echo NoSleep АКТИВИРОВАН.
timeout /t 2 >nul
)