标题: [数值计算] 批处理怎样自动记时关机? [打印本页]
作者: qwertl 时间: 2011-8-22 20:31 标题: 批处理怎样自动记时关机?
本帖最后由 qwertl 于 2011-8-24 20:41 编辑
一开机自动记时45分钟后自动关机, 然后如果重开的话离上次关机没超过20分钟又会调用关机命令进行立即关机,可以帮实现下吗?控制下小孩用电脑
就是下次开机时要获取上次关机的时间做计算有点复杂
作者: garyng 时间: 2011-8-22 20:45
显示系统最后一次启动的时间~
可能帮得上忙~- @echo for each os in getobject _ >bt.vbs
- @echo ("winmgmts:\\.\root\cimv2:win32_operatingsystem").instances_ >>bt.vbs
- @echo wscript.echo os.lastbootuptime:next >>bt.vbs & cscript //nologo bt.vbs & del bt.vbs
复制代码
作者: qwertl 时间: 2011-8-22 20:56
这个echo %time% >>1.txt 放在关机脚本里就行了
作者: garyng 时间: 2011-8-22 21:46
楼上将的对!
echo %time% >>1.txt 放在脚本里就行了
然后开机的时候在检查是否已超过20分钟~
还有离上次关机没超过20分钟又会调用关机命令进行关机
是要等45分钟吗?还是直接关机?
关机命令(等45分钟):shutdown /s /t 2700
建议让脚本后台运行~
作者: garyng 时间: 2011-8-23 15:38
回复 3# qwertl
获取上次关机的时间不难~
问题是时间的减法~
作者: cjiabing 时间: 2011-8-23 16:39
可以实现:
利用schtasks登陆执行一个bat文件。
该bat文件记下开机时间,并添加一项计划任务到45分钟后执行。
现在时间到将来时间的距离是45分钟,这个需要论坛的时间计算函数来实现。
利用schtasks的间隔时间参数也可以实现。
45分钟时间到后立即执行关机命令。并将关机时间计入bat。
因涉及开机后计算本次开机时间与上次开机时间的间隔距离,所以还需要在该bat的开头添加一项计算开机间隔时间的代码。
综上,只需利用一个schtasks命令来执行一项系统启动登陆计划运行一个bat,该bat记录下每次开关机参数,并计算开关机间隔时间,以及开机后45分钟的间隔时间。可能需要时间计算函数,论坛有现成的。所以,该功能很容易实现。不过我现在没空去写,留给新手挑战。
作者: asd821089612 时间: 2011-8-23 17:13
本帖最后由 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 到次日凌晨的话,可能不行
作者: Batcher 时间: 2011-8-23 19:34
回复 7# asd821089612
批处理函数库里面有计算日期、星期、时间等
http://bbs.bathome.net/thread-3056-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |