本帖最后由 asd821089612 于 2011-8-24 07:14 编辑
- @echo off
- if not exist date.txt goto 1
- for /f "delims=&" %%i in (date.txt) do (
- if %%i==%date% goto 3
- )
- goto 1
-
- :3
- if not exist shutdown.txt goto 1
- for /f "delims=:. tokens=1,2" %%i in (shutdown.txt) do (
- set a=%%i
- set b=%%j
- )
- for /f "delims=:. tokens=1,2" %%a in ('echo %time%') do (
- set c=%%a
- set d=%%b
- )
-
- set /a b+=20
- if %b% geq 60 (
- set /a b-=60
- set /a a+=1
- )
- if %a% gtr %c% goto 2
- if %c% equ %a% goto re
- goto 1
-
- :re
- if %b% gtr %d% goto 2
- goto 1
-
-
-
- :1
- @echo off
- echo %date%>date.txt
- for /f "delims=:. tokens=1,2" %%i in ('echo %time%') do (
- set a=%%i
- set b=%%j
- )
- set /a b+=45
- if %b% geq 60 (
- set /a b-=60
- set /a a+=1
- )
- at %a%:%b% shutdown -s -t 3
- echo %a%:%b%>shutdown.txt
- exit
-
- :2
- shutdown -s -t 3
复制代码 最后只要将这个批处理加进注册表开机启动就行了
代码很长 不够精简,有待改进,我是初学者,还在上初中,用简单的命令也只能做到这个程度了
我的代码的原理是这样的:先记录下当前时间,再将时间加上45分钟 (满六十进一位) 添加计划任务,在45分钟之后自动关机 并把那个时间记录进 shutdown.txt 这个文件中
第二次打开时,因为时间不能进行减法运算,所以我就先将上次记录在 shutdown.txt 中的时间加上个二十分钟 (和上面一样) 再比较加上的时间和当前时间(现比较时,再比较分),将会出现两种情况
1.如果当前时间大于计算后的时间,则已经过了20分钟,再跳转到第一次运行时的程序(添加计划任务、关机、记录时间)
2.如果当前时间小于计算后的时间,则说明未过20分钟,立刻关机
理论上代码有如下缺点 待修改
1.如果是23:00 到次日凌晨的话,可能不行 |