如果时间小于19:45则使用Bat文件调用A.bat,如果时间大于19:45则调用B.bat

时间:2010-04-19 12:03:03

标签: batch-file

如果时间小于19:45则调用文件以调用A.bat,如果时间大于19:45则调用B.bat (在这种情况下,我无法使用Windows任务调度程序,因为我的设置使我的下载管理器每次通过此下载管理器下载文件时都会触发此父文件)

4 个答案:

答案 0 :(得分:9)

您可以使用以下代码作为基线(您可以使用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但你的结果可能会有所不同。

如果是,请在设置hhmm时调整子字符串。命令:

set mm=!tm:~3,2!

mm设置为偏移量为3的tm的两个字符(其中偏移量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

答案 1 :(得分:2)

在此处查看DATE and TIME命令。

答案 2 :(得分:2)

我最近做了类似的事情,我的解决方案是for循环 - 并不是非常紧凑但是完成了工作:

for /f "tokens=1,2,3,4 delims=:,. " %%i in ("%time%") do (

echo Timegrab = %%i %%j %%k %%l
set hr=%%i
set mn=%%j
set sc=%%k
set ms=%%l

)

然后您需要做的就是使用IF语句检查%hr%是否小于19且%mn%小于45。

答案 3 :(得分:1)

如何使用Windows任务计划程序?