Board logo

标题: [日期时间] 求BAT脚本获取系统时间并添加延迟5分钟时间的计划任务 [打印本页]

作者: mansonhekk    时间: 2018-10-10 13:36     标题: 求BAT脚本获取系统时间并添加延迟5分钟时间的计划任务

  1. echo 当前服务器时间:%DstTime%
  2. set/a hh=%DstTime:~0,2%
  3. if %hh% lss 10 (goto st1) else (goto st2)
  4. :st1
  5. set/a m1=%DstTime:~2,1%
  6. set/a m2=%DstTime:~3,1%
  7. set/a hh=%DstTime:~0,1%
  8. set/a mm=%m1%*10+%m2%+5
  9. set/a a=%mm%
  10. if %a% geq 60 set/a mm=%mm%-60 & set/a hh=%hh%+%mm%/60
  11. if %hh%==24 set/a hh=0
  12. echo 取服务器时间+5分钟:%hh%:%mm%
  13. if %mm% lss 10 (goto st3) else (goto st4)
  14. :st3
  15. 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
  16. goto exit
  17. :st4
  18. 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
  19. goto exit
  20. :st2
  21. set/a m1=%DstTime:~3,1%
  22. set/a m2=%DstTime:~4,1%
  23. set/a hh=%DstTime:~0,2%
  24. set/a mm=%m1%*10+%m2%+5
  25. set/a a=%mm%
  26. if %a% geq 60 set/a mm=%mm%-60 & set/a hh=%hh%+%mm%/60
  27. if %hh%==24 set/a hh=0
  28. echo 取服务器时间+5分钟:%hh%:%mm%
  29. if %mm% lss 10 (goto st5) else (goto st6)
  30. :st5
  31. 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
  32. goto exit
  33. :st6
  34. 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
  35. goto exit
  36. :exit
复制代码
以上是我连百度带参考写的一段bat,大体的需求是:获取系统时间并添加延迟于系统5分钟时间的一个计划任务(任务是嗲用一个exe),但是我经过多次调试,发现只要一到整点前后5分钟的时候,我运行bat的时候总是提示starttime错误,然后发现获取的系统时间就是-1
       跪求大神指点下,我判断哪里有问题啊?
作者: flashercs    时间: 2018-10-10 15:18

本帖最后由 flashercs 于 2018-10-10 16:01 编辑
  1. @echo off
  2. set "DstTime=0056"
  3. set /a "hh=1%DstTime:~0,2%-100"
  4. set /a "mm=1%DstTime:~2,2%-100"
  5. set /a "mm+=5"
  6. REM get minute
  7. if %mm% geq 60 (
  8.     set /a "mm-=60"
  9.     set /a "jw=1"
  10. ) else (
  11.     set /a "jw=0"
  12. )
  13. REM get hour
  14. set /a "hh+=jw"
  15. if %hh% geq 24 set /a "hh-=24"
  16. REM format time
  17. if %mm% lss 10 set "mm=0%mm%"
  18. if %hh% lss 10 set "hh=0%hh%"
  19. 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%和你的可能不同,仅供参考
  1. @echo off&&setlocal enabledelayedexpansion
  2. echo 目的获取5分钟后的时间
  3. echo %time%
  4. rem 考虑加5后小时变的情况
  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)
  6. if !wfz! leq 9 set wfz=0!wfz!
  7. echo 五分钟后的时间是 !xs!:!wfz!:%time:~6,2%
  8. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2