如果时间小于19:45则调用文件调用A.bat,如果时间大于19:45调用B.bat(在这种情况下我不能使用Windows任务调度程序,因为我有设置使我的下载管理器为每次通过此下载管理器下载文件时触发此父bat文件)
您可以使用以下代码作为基线(您可以使用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
Run Code Online (Sandbox Code Playgroud)
请记住,%time%这与您从time命令获得的格式相同,这可能取决于区域设置.我得到的格式是20:17:28.48晚上8:15左右,但结果可能会有所不同.
如果是,设置在刚调整子hh和mm.命令:
set mm=!tm:~3,2!
Run Code Online (Sandbox Code Playgroud)
设置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
Run Code Online (Sandbox Code Playgroud)