Исправленный и улучшенный вариант вашего батника:
@echo off
REM Получаем путь к папке автозагрузки текущего пользователя
set "startup=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
REM Проверяем, находится ли скрипт уже в автозагрузке
IF NOT EXIST "%startup%\%~nx0" (
echo Добавление скрипта в автозагрузку...
COPY "%~f0" "%startup%\" > NUL
if %errorlevel% equ 0 (
echo Скрипт успешно добавлен в автозагрузку.
) else (
echo Не удалось добавить скрипт в автозагрузку.
pause
exit /b 1
)
) ELSE (
echo Скрипт уже присутствует в автозагрузке.
)
:check_time
REM Получение текущего времени в формате ЧЧ:ММ
for /f "tokens=1-2 delims=: " %%a in ("%time%") do (
set hour=%%a
set minute=%%b
)
REM Удаляем ведущие нули, если они есть
set /a hour=1%hour%-100
set /a minute=1%minute%-100
REM Проверка, прошло ли время 14:17
if %hour% GTR 14 (
goto shutdown
) else if %hour% EQU 14 if %minute% GEQ 17 (
goto shutdown
) else (
echo Время еще не 14:17. Текущее время: %hour%:%minute%. Проверка продолжается...
)
REM Ожидание 60 секунд перед следующей проверкой
timeout /t 60 /nobreak >nul
REM Повторная проверка времени
goto check_time
:shutdown
echo Время после 14:17. Компьютер выключится через 60 секунд...
shutdown /s /f /t 60
goto end
:end
Есть код, он работает за исключением того, что не добавляется в автозагрузку