Board logo

标题: [系统相关] [讨论]批处理定时关机 [打印本页]

作者: youxi01    时间: 2007-12-31 14:58     标题: [讨论]批处理定时关机

要求:
1、可以设置定时关机
2、可以取消定时关机
3、支持瞬间关机
4、交互性良好、代码简洁
作者: foxJL    时间: 2007-12-31 15:11

刚学批处理的时候写的代码,代码简洁肯定谈不上了,不过其它的都还算好吧(自我感觉)呵呵...
  1. @echo off & cls & color 27 & mode con cols=62 lines=20 & title [定时关机工具] 今天是:%date:~0,4%年%date:~5,2%月%date:~8,2%日,%time:~0,2%点%time:~3,2%分%time:~6,5%秒
  2. set n=10000
  3. if exist %windir%\system32\shutdown.exe (goto :home) else (copy %temp%\shutdown.exe %windir%\system32\)
  4. :home
  5. cls
  6. echo.
  7. echo         温馨提示:爱机也需休息!
  8. echo.
  9. echo         注意:如定时错误,可重启本程序输入[O]取消定时,然后
  10. echo         重新定时即可.本程序适用于WIN XP操作系统.
  11. echo.
  12. echo         泛滥棏慌°程序制作,于2007年4月19日.
  13. echo.
  14. echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  15. echo         [S].定时关机     [R].定时重启     [O].取消定时
  16. echo.
  17. echo         [G].立即关机     [C].立即重启     [E].放弃退出
  18. echo.
  19. echo         [M].无倒计时窗口关机      [Y].无倒计时窗口重启
  20. echo.
  21. set /P a=        请选择操作代号:
  22. SET w1=R S O E G C M Y
  23. FOR %%B IN (%w1%) DO IF /I "%a%"=="%%B" set flag=1
  24. ECHO.
  25. if defined flag (goto :%a%) else (
  26. SET /P N=        请选择选项里应有的操作.[Y-继续]:
  27. )
  28. IF /I "%N%"=="Y" (GOTO :home) ELSE (exit)
  29. :S
  30. cls
  31. echo.
  32. echo.
  33. echo.
  34. echo    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  35. echo    ┃注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.┃
  36. echo    ┃                          ┃
  37. echo    ┃因关机时不保存数据,避免损失,倒计时间不得少于1分钟. ┃
  38. echo    ┃                          ┃
  39. echo    ┃如输入:31,将会在31分钟后关机.会有倒计时窗口,不能关闭┃
  40. echo    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
  41. echo.
  42. :s1
  43. Set /p time=    请输入关机倒计时间,Q-返回:
  44. ECHO.
  45. if /i "%time%"=="q" goto :home
  46. if %time% lss 1 (
  47. echo     因关机时不保存数据,避免损失,倒计时间不得少于1分钟.
  48. echo.
  49. echo     如想快速关机,请返回主菜单,[G]键立即关机.
  50. echo.
  51. goto :s1
  52. )
  53. if %time% lss %n% (goto :gj) else (
  54. echo     注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.
  55. echo.
  56. goto :s1)
  57. :gj
  58. set /a time1=%time%*60
  59. shutdown -s -f -c "你输入的是%time%分钟后关机" -t %time1%
  60. goto :q
  61. :R
  62. cls
  63. echo.
  64. echo.
  65. echo.
  66. echo    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  67. echo    ┃注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.┃
  68. echo    ┃                          ┃
  69. echo    ┃因关机时不保存数据,避免损失,倒计时间不得少于1分钟. ┃
  70. echo    ┃                          ┃
  71. echo    ┃如输入:31,将会在31分钟后重启.会有倒计时窗口,不能关闭┃
  72. echo    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
  73. echo.
  74. :r1
  75. Set /p time=    请输入重启倒计时间(分钟),Q-返回:
  76. ECHO.
  77. if /i "%time%"=="q" goto :home
  78. if %time% lss 1 (
  79. echo     因重启时不保存数据,避免损失,倒计时间不得少于1分钟.
  80. echo.
  81. echo     如想快速重启,请返回主菜单,[C]键立即重启.
  82. echo.
  83. goto :r1
  84. )
  85. if %time% lss %n% (goto :cq) else (
  86. echo     注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.
  87. echo.
  88. goto :r1)
  89. :cq
  90. set /a time1=%time%*60
  91. shutdown -R -f -c "你输入的是%time%分钟后重启" -t %time1%
  92. goto :q
  93. :o
  94. at /d /y
  95. shutdown -a | find "没有" >nul
  96. if "%ERRORLEVEL%"=="0" echo         没有关机任务!
  97. echo.
  98. goto :q
  99. :g
  100. shutdown -F -S -T 0
  101. goto :q
  102. :c
  103. shutdown -F -R -T 0
  104. goto :q
  105. :m
  106. echo         时间使用24小时制(如2:15、14:15),在关机前30秒会
  107. echo         出现关机倒计时框.
  108. ECHO.
  109. :m1
  110. SET /P time=        因关机不保存数据,请仔细输入时间(Q-返回):
  111. if /i "%time%"=="q" goto :home
  112. if not "%time%"=="" for %%s in (%time%) do (
  113. at %%s /every:M,T,W,Th,F,S,Su shutdown -F -s | find "无效的命令" >nul
  114. )
  115. if "%ERRORLEVEL%"=="0" (
  116. echo.
  117. echo         无效的时间,重新输入!
  118. ECHO.
  119. goto :m1
  120. )
  121. echo.
  122. reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 取消定时关机 /t reg_sz /d "at /d /y" /f>nul
  123. echo         将在%time%关机!
  124. echo.
  125. goto :q
  126. :y
  127. echo         时间使用24小时制(如2:15、14:15),在关机前30秒会
  128. echo         出现关机倒计时框.
  129. ECHO.
  130. :Y1
  131. SET /P time=        因重启不保存数据,请仔细输入时间(Q-返回):
  132. if /i "%time%"=="q" goto :home
  133. if not "%time%"=="" for %%s in (%time%) do (
  134. at %%s /every:M,T,W,Th,F,S,Su shutdown -F -R | find "无效的命令" >nul
  135. )
  136. if "%ERRORLEVEL%"=="0" (
  137. echo.
  138. echo         无效的时间,重新输入!
  139. ECHO.
  140. goto :Y1
  141. )
  142. echo.
  143. reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 取消定时关机 /t reg_sz /d "at /d /y" /f>nul
  144. echo         将在%time%重启!
  145. echo.
  146. goto :q
  147. :q
  148. echo         操作成功 ! 任意键返回...
  149. pause >nul
  150. goto :home
  151. :E
  152. exit
复制代码

作者: youxi01    时间: 2007-12-31 15:16

刚学的时候写的?
非常不错啊
从一开始就有 “大家” 风范啊!!
作者: foxJL    时间: 2007-12-31 15:26

呵呵,过奖了.的确是初学时候写的,我还把这个批处理和shutdown.exe一起打包,这样就可以移植到别的系统上使用了.
作者: goofy123    时间: 2011-2-23 09:03

写的不错 很好 学习一下
作者: teslawq    时间: 2016-5-25 11:47

想问下如果想输入非整数数值怎么办?因为如果输入小数点貌似会立即关机,我也编了个定时关机的bat,定时单位是小时,一直想弄个定时小数小时的关机bat,如1.5小时候关机。。一直没解决,高手求教!
作者: 111    时间: 2016-5-27 23:43

电脑本身带的命令没有瞬间关机啊
作者: gawk    时间: 2016-5-28 11:11

回复 7# 111


    他说的瞬间关机可能是指不要出现倒计时那种




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