Вы можете использовать следующий код в качестве базового (вы можете использовать bat
файлы, но я предпочитаю cmd
в качестве расширения):
@echo off
setlocal enableextensions enabledelayedexpansion
set tm=%time%
:: Test data on lines below.
:: set tm=18:59:59.00
:: set tm=19:00:00.00
:: set tm=19:44:59.00
:: set tm=19:45:00.00
:: set tm=23:59:59.99
set hh=!tm:~0,2!
set mm=!tm:~3,2!
if !hh! lss 19 (
call a.cmd
goto :done
)
if !hh! equ 19 (
if !mm! lss 45 (
call a.cmd
goto :done
)
)
call b.cmd
:done
endlocal
Имейте в виду, что %time%
- это тот же формат, который вы получаете из команды time
, и это может зависеть от локали. Формат, который я получаю, - 20:17:28.48
около 8:15 вечера, но ваш результат может быть другим.
Если это так, просто настройте подстроки при настройке hh
и mm
. Команда:
set mm=!tm:~3,2!
устанавливает mm
на два символа tm
со смещением 3 (где смещение 0 - первый символ).
Если вы не большой поклонник спагетти-кода, даже в пакетном режиме, вы также можете использовать:
@echo off
setlocal enableextensions enabledelayedexpansion
set tm=%time%
:: Test data on lines below.
:: set tm=18:59:59.00
:: set tm=19:00:00.00
:: set tm=19:44:59.00
:: set tm=19:45:00.00
:: set tm=23:59:59.99
set hh=!tm:~0,2!
set mm=!tm:~3,2!
if !hh! lss 19 (
call a.cmd
) else (
if !hh! equ 19 if !mm! lss 45 (
call a.cmd
) else (
call b.cmd
)
)
endlocal