Я не могу получить правильные строки if% day% EQU . Я пытаюсь получить переменную autoShutDown в "T", когда сценарий запускается между пятницей 8:30 вечера и субботой в 5:15 вечера. Но иногда кажется, что форматирование отличается и вызывает неправильное назначение переменных.
Какой лучший способ установить переменную? В случае, если это имеет значение, у меня Windows 8.1.
@ECHO OFF
SET day=%date:~0,3%
SET time=%time:~0%
set "time=%time: =%"
set currentDate=%date:~4,10%
set autoShutDown=F
if %day% EQU Fri IF %time% GEQ 20:30:00.00 set autoShutDown=T
if %day% EQU Sat IF %time% LEQ 17:15:00.00 set autoShutDown=T
if "%autoShutDown%"=="T" (
GOTO AUTOSHUTDOWN
)
GOTO WEEKDAY
:AUTOSHUTDOWN
%WINDIR%\SYSTEM32\SHUTDOWN.EXE /s /t 180 /c "Shutdown in 180 seconds" /d p:4:1
:WEEKDAY
[РЕДАКТИРОВАТЬ] Итак, исходя из того, что @harrymc написал ниже, это то, что я должен делать?
@ECHO OFF
set autoShutDown=F
for /f %%C in ('wmic path Win32_LocalTime Get dayofweek^,Year^,Month^,Day^,Hour^,Minute^,Second /Format:List 2^>nul ^| find "="') do @set current%%C
REM - Friday 8 PM or later
if %currentDayOfWeek% EQU 5 IF %currentHour% GEQ 20 set autoShutDown=T
REM - ...or Saturday earlier than 6 PM
if %currentDayOfWeek% EQU 6 IF %currentHour% LEQ 17 set autoShutDown=T
if "%autoShutDown%"=="T" (
GOTO AUTOSHUTDOWN
)
GOTO WEEKDAY
:AUTOSHUTDOWN
%WINDIR%\SYSTEM32\SHUTDOWN.EXE /s /t 180 /c "Shutdown in 180 seconds" /d p:4:1
:WEEKDAY