标题: [日期时间] 求BAT脚本获取系统时间并添加延迟5分钟时间的计划任务 [打印本页]
作者: mansonhekk 时间: 2018-10-10 13:36 标题: 求BAT脚本获取系统时间并添加延迟5分钟时间的计划任务
- echo 当前服务器时间:%DstTime%
-
- set/a hh=%DstTime:~0,2%
- if %hh% lss 10 (goto st1) else (goto st2)
-
- :st1
- set/a m1=%DstTime:~2,1%
- set/a m2=%DstTime:~3,1%
- set/a hh=%DstTime:~0,1%
- set/a mm=%m1%*10+%m2%+5
- set/a a=%mm%
- if %a% geq 60 set/a mm=%mm%-60 & set/a hh=%hh%+%mm%/60
- if %hh%==24 set/a hh=0
- echo 取服务器时间+5分钟:%hh%:%mm%
- if %mm% lss 10 (goto st3) else (goto st4)
-
- :st3
- schtasks /create /f /tn "uninstallDCS" /tr D:\XXXXXXX\unistallAll_TY.exe /sc once /st 0%hh%:0%mm% /sd %date:~0,10% /s 172.21.31.35 /u \administrator /p 1
- goto exit
-
- :st4
- schtasks /create /f /tn "uninstallDCS" /tr D:\XXXXXXX\unistallAll_TY.exe /sc once /st 0%hh%:%mm% /sd %date:~0,10% /s 172.21.31.35 /u \administrator /p 1
- goto exit
- :st2
- set/a m1=%DstTime:~3,1%
- set/a m2=%DstTime:~4,1%
- set/a hh=%DstTime:~0,2%
- set/a mm=%m1%*10+%m2%+5
- set/a a=%mm%
- if %a% geq 60 set/a mm=%mm%-60 & set/a hh=%hh%+%mm%/60
- if %hh%==24 set/a hh=0
- echo 取服务器时间+5分钟:%hh%:%mm%
- if %mm% lss 10 (goto st5) else (goto st6)
- :st5
- schtasks /create /f /tn "uninstallDCS" /tr D:\XXXXXX\unistallAll_TY.exe /sc once /st %hh%:0%mm% /sd %date:~0,10% /s 172.21.31.35 /u \administrator /p 1
- goto exit
- :st6
- schtasks /create /f /tn "uninstallDCS" /tr D:\XXXXXXX\unistallAll_TY.exe /sc once /st %hh%:%mm% /sd %date:~0,10% /s 172.21.31.35 /u \administrator /p 1
- goto exit
-
- :exit
复制代码
以上是我连百度带参考写的一段bat,大体的需求是:获取系统时间并添加延迟于系统5分钟时间的一个计划任务(任务是嗲用一个exe),但是我经过多次调试,发现只要一到整点前后5分钟的时候,我运行bat的时候总是提示starttime错误,然后发现获取的系统时间就是-1
跪求大神指点下,我判断哪里有问题啊?
作者: flashercs 时间: 2018-10-10 15:18
本帖最后由 flashercs 于 2018-10-10 16:01 编辑
- @echo off
- set "DstTime=0056"
- set /a "hh=1%DstTime:~0,2%-100"
- set /a "mm=1%DstTime:~2,2%-100"
- set /a "mm+=5"
- REM get minute
- if %mm% geq 60 (
- set /a "mm-=60"
- set /a "jw=1"
- ) else (
- set /a "jw=0"
- )
- REM get hour
- set /a "hh+=jw"
- if %hh% geq 24 set /a "hh-=24"
- REM format time
- if %mm% lss 10 set "mm=0%mm%"
- if %hh% lss 10 set "hh=0%hh%"
-
- schtasks /create /f /tn "uninstallDCS" /tr D:\XXXXXXX\unistallAll_TY.exe /sc once /st %hh%:%mm% /s 172.21.31.35 /u \administrator /p 1
复制代码
schtasks 参数/sd 不好计算日期,批不好算。忽略/sd 默认是当前日期。
作者: mansonhekk 时间: 2018-10-10 18:49
回复 2# flashercs
大腿,如何忽略啊,我直接删除了/sd后提示参数错误~~
作者: mansonhekk 时间: 2018-10-10 18:52
回复 2# flashercs
我仔细看了下,这下明白了。我再去试试
作者: mansonhekk 时间: 2018-10-10 19:00
schtasks 参数/sd 不好计算日期,批不好算。忽略/sd 默认是当前日期。
flashercs 发表于 2018-10-10 15:18
使用你的这段我试了下,提示“/ST早于当前的时间,任务可能无法运行”,请问这个是什么原因呢?
作者: flashercs 时间: 2018-10-10 20:37
回复 5# mansonhekk
不知道%DstTime%格式,所以是猜的。自己echo %hh%:%mm%看看结果是否正确再讨论schtasks
作者: hlzj88 时间: 2018-10-10 20:56
本帖最后由 hlzj88 于 2018-10-10 21:26 编辑
我的系统是win7,%time%和你的可能不同,仅供参考- @echo off&&setlocal enabledelayedexpansion
- echo 目的获取5分钟后的时间
- echo %time%
- rem 考虑加5后小时变的情况
- if %time:~3,2% geq 55 (set /a xs=%time:~0,2%+1&&set /a wfz=5-60+%time:~3,2%) else (set xs=%time:~0,2%&&set /a wfz=%time:~3,2%+5)
- if !wfz! leq 9 set wfz=0!wfz!
- echo 五分钟后的时间是 !xs!:!wfz!:%time:~6,2%
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |