中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一个开机一小时后自动关机的代码
作者:
标题: 求一个开机一小时后自动关机的代码 上一主题 | 下一主题
acaigg
初级用户





积分 115
发帖 92
注册 2010-12-24
状态 离线
『楼 主』:  求一个开机一小时后自动关机的代码 使用 LLM 解释/回答一下

求一个开机一小时后自动关机,并在关机后一小时内不能开机的代码。是为了防止我小孩沉迷电脑而做的,请前辈们帮助。
基本思路是使用shutdown。可以先创建一个记录开关机时间的文件,然后读取并运算,再执行相关的操作。要求是后台执行,最好CPU不要太高。谢谢!!!


2011-1-20 20:26
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
fsfss
初级用户





积分 22
发帖 20
注册 2009-7-6
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

hh.exe ntcmds.chm::net_user.htm
hh.exe ntcmds.chm::shutdown.htm


2011-1-20 22:14
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
a85103531
新手上路





积分 7
发帖 7
注册 2007-4-16
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

你说的一个小时内关机倒可以实现,但是一个小时内不能开机,好像不行吧。软硬不通呀。


2012-12-27 18:58
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
77720666
初级用户





积分 59
发帖 46
注册 2007-4-10
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

Originally posted by a85103531 at 2012-12-27 06:58 PM:
你说的一个小时内关机倒可以实现,但是一个小时内不能开机,好像不行吧。软硬不通呀。


可以实现一小时内再开机就自动关机吧
建个记录文件记录上次关机时间,每次开机判断就可以了

用任务计划计时执行最省资源了,但是不会命令增加任务计划,还是等高手来解答吧


2016-1-14 17:33
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
5872169
高级用户





积分 959
发帖 474
注册 2007-10-25
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

最好用VBS方式


2016-2-19 15:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tongzj
初级用户





积分 49
发帖 43
注册 2007-1-20
状态 离线
『第 6 楼』:  试试 使用 LLM 解释/回答一下

把脚本放到 c:\windows\system32\,执行 shut -i 安装生成任务计划,实现超1小时关机,开机后检查如果未达到1小时再次关机,为了减少内容,忽略了闰年问题

@echo off
setlocal enabledelayedexpansion
if /i "%1"=="-i" (goto :INSTALL)
cd /d c:\windows\system32

::计算当前时间值
call :Date2days %date%
for /f "tokens=1,2 delims=:" %%a in ("%time%") do (set /a now=%%a*60+%%b)
set /a now=(%days%+%day%-1)*1440+%now%

::计算启动时间
for /f "tokens=2,3 delims=, " %%a in ('systeminfo^|findstr /i /c:"系统启动时间"') do (
set startdate=%%a
set starttime=%%b
)
call :Date2days %startdate%
for /f "tokens=1,2 delims=:" %%a in ("%starttime%") do (set /a startminutes=%%a*60+%%b)
set /a closetime=(%days%+%day%-1)*1440+%startminutes%+60

::对比开机时间和当前时间
if /i %now% gtr %closetime% (
echo 开机已经超过1小时,立即关机
echo %now% >shutdown.txt
shutdown /s /t 0 /f
goto :eof
)

if not exist shutdown.txt (
echo %now% >shutdown.txt
goto :eof
)

for /f "tokens=*" %%a in (shutdown.txt) do (set /a last=%%a+60)
if /i %now% leq %last% (
echo 此次开机距上次关机未超过1小时,立即关机
echo %now% >shutdown.txt
shutdown /s /t 0 /f
)
goto :eof

:Date2days
for /f "tokens=2,3 delims=/- " %%a in ("%1") do (
set month=%%a
set day=%%b
)
set 1=0
set 2=31
set 3=28
set 4=31
set 5=30
set 6=31
set 7=30
set 8=31
set 9=31
set 10=30
set 11=31
set 12=30
set days=0
for /l %%a in (1,1,%month%) do (set days=!%%a!+!days!)
goto :eof

:INSTALL
schtasks /create /tn shutdown /tr c:\windows\system32\shut.bat /ru system /f /sc minute /mo 5

Last edited by tongzj on 2016-2-21 at 17:48 ]


2016-2-19 17:46
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
tongzj
初级用户





积分 49
发帖 43
注册 2007-1-20
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

这个脚本受系统和时间格式影响,可能需要做一些调整。
1、日期格式是什么,在dos下执行 echo %date% %time%
2、systeminfo|findstr /i /c:"系统启动时间"
把结果贴上来。

Last edited by tongzj on 2016-2-22 at 10:43 ]


2016-2-22 10:42
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
niudd
中级用户





积分 219
发帖 205
注册 2017-2-23
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

有点复杂的样子


2017-2-28 11:35
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
niudd
中级用户





积分 219
发帖 205
注册 2017-2-23
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

真棒了


2017-3-3 19:01
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: