Board logo

标题: [文本处理] 系统重启记数批处理 [打印本页]

作者: xxnda    时间: 2014-12-6 13:13     标题: 系统重启记数批处理

Hi 各位大神,

我想实现一个系统重启记录重启日期时间和累加数的批处理
如果能有一个提示能让我设置需要重启几个小时就更好了(就是当设置的小时数够了之后就自动停止重启了).

需要的结果比如:
2014/12/6 13:00 系统重启第 1 次
2014/12/6 13:05 系统重启第 2 次
.
.
2014/12/7 10:00 系统重启第 n 次

shutdown -r -t 120 -f -c "reboot" <---我仅会用这个无法记数,在其后面我加了 date /t >> c:\reboot.txt
                                                                                                    time /t >>  c:\reboot.txt
但是这个结果不尽如人意啊!希望各位大神指点一下。
作者: mms0536    时间: 2014-12-6 18:23

???你的目的是你指定一个时间,比如说3小时,然后在这3小时的时间里面就一直重启??

如果是的话,你可以获取当前时间然后加上3小时,然后在这期间用at设置重启....
作者: xxnda    时间: 2014-12-6 19:19

是最好能echo一个时间,请输入需要重启的时间,然后重启一次记录一次,比如:
请输入你需要重启几个小时:<---比如我输入4
然后就开始一直重启,第一次重启在C盘生成一个reboot.log的文件,下来就是在这个log文件里面记录重启次数
2014/12/6 13:00 系统重启第 1 次
2014/12/6 13:05 系统重启第 2 次
.
.
.
作者: mms0536    时间: 2014-12-6 22:28

本帖最后由 mms0536 于 2014-12-6 22:44 编辑

回复 3# xxnda
  1. @echo off
  2. :begin
  3. if not exist ./reboottime.ini echo 0 >./reboottime.ini
  4. set /p c=<./reboottime.ini
  5. set c=%c: =%
  6. if not exist ./restarttime.ini goto inputtime
  7. set /p restarttime=<./restarttime.ini
  8. goto next
  9. :inputtime
  10. cls
  11. echo.
  12. echo 输入要重启到的时间,时间格式hh:mm
  13. echo.
  14. set /p restarttime=请输入要重启到的时间:
  15. echo %restarttime%>./restarttime.ini
  16. :next
  17. set hour=%restarttime:~0,2%
  18. set min=%restarttime:~3,2%
  19. set panduan=%restarttime:~2,1%
  20. if %hour% GTR 23 goto error
  21. if %min% GTR 59 goto error
  22. if "%panduan%" NEQ ":" goto error
  23. set curhour=%time:~0,2%
  24. set curmin=%time:~3,2%
  25. set /a a=%hour%-%curhour%
  26. set /a b=%min%-%curmin%
  27. rem 小时相减之后大于0,肯定不到时间
  28. if %a% GTR 0 goto restart
  29. rem 小时相减小于0 肯定过时间了,退出
  30. if %a% LSS 0 goto exit
  31. rem 小时相减=0,再判断分钟数,分钟数相减大于0,还不到时间
  32. if %b% GTR 0 goto restart
  33. rem 到这里小时肯定就是一样了,分钟数如果小于或者等于0,那就结束
  34. if %b% LEQ 0 goto exit
  35. :restart
  36. echo 即将重启电脑
  37. set /a c=%c%+1
  38. echo %c% >./reboottime.ini
  39. echo %date%,%time%,第%c%次重启>>.\reboot.log
  40. rem 自己修改300,单位秒,如果立即重启,就0
  41. shutdown -r -t 300
  42. pause>nul
  43. exit
  44. :exit
  45. echo 已经重启完了
  46. type .\reboot.log
  47. pause>nul
  48. exit
  49. :error
  50. echo .
  51. echo error:时间格式不对,或者输入时间有误
  52. echo .
  53. pause>nul
  54. goto begin
复制代码

作者: mms0536    时间: 2014-12-6 22:31

本帖最后由 mms0536 于 2014-12-6 22:45 编辑

回复 3# xxnda


    同样新手,时间格式需要改成hh:mm格式,在区域和语言选项里面...
输入的时候要输入hh:mm格式,会进行一个简单的判断
判断前两位数是不是小于24,没有判断小于0,
判断第三位是不是:
判断后两位是不是小于60,也没判断小于0

你要是有其他的想法自己改吧

效率有点低,不过我自己测试功能是实现了

会生成三个文件,生成位置现在默认是当前路径,要修改你自己改吧

如果要重新开始,删除三个文件就好了
作者: xxnda    时间: 2014-12-7 16:55

回复  xxnda
mms0536 发表于 2014-12-6 22:28



    非常感谢你的回复,我明天将试试。还有,如果我仅想实现自动重启,然后仅仅只计数的话,那应该script应该会少很多呵!是否能再给个这样的简化版的script,非常感谢!
作者: mms0536    时间: 2014-12-7 18:47

回复 6# xxnda
  1. @echo off
  2. if not exist ./reboottime.ini echo 0 >./reboottime.ini
  3. set /p c=<./reboottime.ini
  4. set c=%c: =%
  5. set /a c=%c%+1
  6. echo %c% >./reboottime.ini
  7. echo %date%,%time%,第%c%次重启>>.\reboot.log
  8. shutdown -r -t 300
  9. pause>nul
  10. exit
复制代码





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