标题: [系统相关] [讨论]批处理定时关机 [打印本页]
作者: youxi01 时间: 2007-12-31 14:58 标题: [讨论]批处理定时关机
要求:
1、可以设置定时关机
2、可以取消定时关机
3、支持瞬间关机
4、交互性良好、代码简洁
作者: foxJL 时间: 2007-12-31 15:11
刚学批处理的时候写的代码,代码简洁肯定谈不上了,不过其它的都还算好吧(自我感觉)呵呵...
-
- @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%秒
- set n=10000
- if exist %windir%\system32\shutdown.exe (goto :home) else (copy %temp%\shutdown.exe %windir%\system32\)
- :home
- cls
- echo.
- echo 温馨提示:爱机也需休息!
- echo.
- echo 注意:如定时错误,可重启本程序输入[O]取消定时,然后
- echo 重新定时即可.本程序适用于WIN XP操作系统.
- echo.
- echo 泛滥棏慌°程序制作,于2007年4月19日.
- echo.
- echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- echo [S].定时关机 [R].定时重启 [O].取消定时
- echo.
- echo [G].立即关机 [C].立即重启 [E].放弃退出
- echo.
- echo [M].无倒计时窗口关机 [Y].无倒计时窗口重启
- echo.
- set /P a= 请选择操作代号:
- SET w1=R S O E G C M Y
- FOR %%B IN (%w1%) DO IF /I "%a%"=="%%B" set flag=1
- ECHO.
- if defined flag (goto :%a%) else (
- SET /P N= 请选择选项里应有的操作.[Y-继续]:
- )
- IF /I "%N%"=="Y" (GOTO :home) ELSE (exit)
- :S
- cls
- echo.
- echo.
- echo.
- echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- echo ┃注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.┃
- echo ┃ ┃
- echo ┃因关机时不保存数据,避免损失,倒计时间不得少于1分钟. ┃
- echo ┃ ┃
- echo ┃如输入:31,将会在31分钟后关机.会有倒计时窗口,不能关闭┃
- echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
- echo.
- :s1
- Set /p time= 请输入关机倒计时间,Q-返回:
- ECHO.
- if /i "%time%"=="q" goto :home
- if %time% lss 1 (
- echo 因关机时不保存数据,避免损失,倒计时间不得少于1分钟.
- echo.
- echo 如想快速关机,请返回主菜单,[G]键立即关机.
- echo.
- goto :s1
- )
- if %time% lss %n% (goto :gj) else (
- echo 注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.
- echo.
- goto :s1)
- :gj
- set /a time1=%time%*60
- shutdown -s -f -c "你输入的是%time%分钟后关机" -t %time1%
- goto :q
- :R
- cls
- echo.
- echo.
- echo.
- echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- echo ┃注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.┃
- echo ┃ ┃
- echo ┃因关机时不保存数据,避免损失,倒计时间不得少于1分钟. ┃
- echo ┃ ┃
- echo ┃如输入:31,将会在31分钟后重启.会有倒计时窗口,不能关闭┃
- echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
- echo.
- :r1
- Set /p time= 请输入重启倒计时间(分钟),Q-返回:
- ECHO.
- if /i "%time%"=="q" goto :home
- if %time% lss 1 (
- echo 因重启时不保存数据,避免损失,倒计时间不得少于1分钟.
- echo.
- echo 如想快速重启,请返回主菜单,[C]键立即重启.
- echo.
- goto :r1
- )
- if %time% lss %n% (goto :cq) else (
- echo 注意:时间必须为纯数字,并且倒计时间不得大于%n%分钟.
- echo.
- goto :r1)
- :cq
- set /a time1=%time%*60
- shutdown -R -f -c "你输入的是%time%分钟后重启" -t %time1%
- goto :q
- :o
- at /d /y
- shutdown -a | find "没有" >nul
- if "%ERRORLEVEL%"=="0" echo 没有关机任务!
- echo.
- goto :q
- :g
- shutdown -F -S -T 0
- goto :q
- :c
- shutdown -F -R -T 0
- goto :q
- :m
- echo 时间使用24小时制(如2:15、14:15),在关机前30秒会
- echo 出现关机倒计时框.
- ECHO.
- :m1
- SET /P time= 因关机不保存数据,请仔细输入时间(Q-返回):
- if /i "%time%"=="q" goto :home
- if not "%time%"=="" for %%s in (%time%) do (
- at %%s /every:M,T,W,Th,F,S,Su shutdown -F -s | find "无效的命令" >nul
- )
- if "%ERRORLEVEL%"=="0" (
- echo.
- echo 无效的时间,重新输入!
- ECHO.
- goto :m1
- )
- echo.
- reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 取消定时关机 /t reg_sz /d "at /d /y" /f>nul
- echo 将在%time%关机!
- echo.
- goto :q
- :y
- echo 时间使用24小时制(如2:15、14:15),在关机前30秒会
- echo 出现关机倒计时框.
- ECHO.
- :Y1
- SET /P time= 因重启不保存数据,请仔细输入时间(Q-返回):
- if /i "%time%"=="q" goto :home
- if not "%time%"=="" for %%s in (%time%) do (
- at %%s /every:M,T,W,Th,F,S,Su shutdown -F -R | find "无效的命令" >nul
- )
- if "%ERRORLEVEL%"=="0" (
- echo.
- echo 无效的时间,重新输入!
- ECHO.
- goto :Y1
- )
- echo.
- reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 取消定时关机 /t reg_sz /d "at /d /y" /f>nul
- echo 将在%time%重启!
- echo.
- goto :q
- :q
- echo 操作成功 ! 任意键返回...
- pause >nul
- goto :home
- :E
- 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 |