中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
<<   [1] [2]  >>   >
作者:
标题: [原创]批处理: 定时关机程序 上一主题 | 下一主题
subi
新手上路





积分 6
发帖 4
注册 2008-11-22
状态 离线
『楼 主』:  [原创]批处理: 定时关机程序

这是俺的第一个批处理成果,觉得好帮宣传下. @echo off echo 欢迎使用DOS编写的定时关机程序,本程序在windows xp下(CMD)运行. echo 作者:subi echo 请选择关机方式: echo 指定时间关机请按 1 然后回车 echo 倒计时方式关机请按 2 然后回车 echo 退出请按 3 然后回车 set /p kk= if "%kk%"=="3" goto end3 if "%kk%"=="1" goto dd ::倒计时部分 set /a h=0 set hh=0 ::初设0防止空输入 echo 请输入需要定时的小时数: (注意输入数字前不能有0) set /p hh= set /a h=%hh% echo 请输入需要定时的分数: (注意输入数字前不能有0) set /a m=0 set mm=0 set /p mm= set /a m=%mm% set /a hm=h+m if %hm% equ 0 goto over2 ::防止有人同时输入0 cls echo 距离关机时间还有%h%小时%m%分钟 if %m% equ 0 goto m-no ::修正分数为0的bug :m-have time /t >time.txt for /f "tokens=2,3 delims=: " %%i in (time.txt) do set m2=%%i :m-count time /t >time.txt for /f "tokens=2,3 delims=: " %%j in (time.txt) do set m3=%%j if %m2%==%m3% goto m-count set /a m=m-1 cls echo 距离关机时间还有%h%小时%m%分钟 if %m% neq 0 goto m-have ::分数读完 if %h% equ 0 goto over ::小时数读完 over :m-no set /a h=h-1 set /a m=60 ::用1小时来换60分钟 goto m-have :over del time.txt ::以上为计时器部分 :over2 shutdown -f -s -t 0 ::以下部分为定时器部分 :dd @echo off echo 请输入要关机的小时数: set hd= set hm= set /p hd= echo 请输入要关机的分数: set /p md= cls if "%hd%"=="08" goto uuu ::修正08 BUG set /a hd2=%hd% if %hd2% lss 10 set hd=0%hd2% ::补0容错 if "%md%"=="08" goto uuu set /a md2=%md% if %md2% lss 10 set md=0%md2% :uuu echo 你当前设定的关机时间为 %hd%:%md% :hhh time /t >time.txt for /f "tokens=1,3 delims=: " %%i in (time.txt) do set hhh=%%i if not "%hhh%"=="%hd%" goto hhh :mmm time /t >time.txt for /f "tokens=2,3 delims=: " %%i in (time.txt) do set mmm=%%i if not "%mmm%"=="%md%" goto mmm del time.txt shutdown -f -s -t 0 :end3 exit


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-22 21:27


2008-11-22 18:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

Q: 如何给代码加code标签? A: www.cn-dos.net/forum ... 参考:www.cn-dos.net/forum ...




2008-11-22 21:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
holucan
初级用户





积分 26
发帖 25
注册 2008-11-7
状态 离线
『第 3 楼』:  

不错的批处理,里边还是得使用上shutdown这程序。


2008-11-22 23:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  Re 3楼

XP以上的系统自带shutdown.exe




2008-11-22 23:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
aiqian2008
初级用户





积分 35
发帖 22
注册 2008-10-11
状态 离线
『第 5 楼』:  

运行一下,发现一直在循环,cpu100%。一直到指定关机时间才会停


2008-11-23 00:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  Re 5楼

请不要把代码保存为shutdown.bat或者shutdown.cmd 试试test.bat




2008-11-23 00:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
aiqian2008
初级用户





积分 35
发帖 22
注册 2008-10-11
状态 离线
『第 7 楼』:  

我把它保存为a.bat,没有保存为shutdown.bat或者shutdown.cmd 看源码就知道选1时,它就会一直在循环 :mmm time /t >time.txt for /f "tokens=2,3 delims=: " %%i in (time.txt) do set mmm=%%i if not "%mmm%"=="%md%" goto mmm


2008-11-23 01:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
subi
新手上路





积分 6
发帖 4
注册 2008-11-22
状态 离线
『第 8 楼』:  

不用循环就能定时的方法, 俺不可能想得出哦. 本程序旨在做出一个定时的思路, 不一定非用于关机呀, 比如定时执行一些程序什么的.


2008-11-23 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  Re 8楼

参考:批处理中的延时 www.cn-dos.net/forum ...




2008-11-23 11:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
subi
新手上路





积分 6
发帖 4
注册 2008-11-22
状态 离线
『第 10 楼』:  

原来这个思想早有人提出了, 比俺的简略多了, 惭愧.


2008-11-23 11:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 11 楼』:  

shutdown在锁定状态(欢迎屏幕)下不工作,这问题一直困扰啊。。。


2008-11-23 13:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
CMStruggling
新手上路





积分 14
发帖 8
注册 2008-11-14
状态 离线
『第 12 楼』:  

不知道该脚本在Windows Server 2008系统上是否同样可行?


2008-11-23 13:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lcdj888
新手上路





积分 1
发帖 1
注册 2008-7-10
状态 离线
『第 13 楼』:  

学习ing


2008-11-26 02:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
crystal0808
新手上路





积分 6
发帖 20
注册 2008-11-25
状态 离线
『第 14 楼』:  

定时关机直接在运行那填入 shutdown -s -t xx 就可以了吧 xx 代表时间,以秒为单位 比如 shutdown -s -t 60,就是一分钟后关机 当然也可以用一些命令来取消定时关机命令 shutdown -a 这些在cmd输入shutdown /?就可以了,也不用整这么麻烦啊


2008-11-26 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 15 楼』:  

为什么不用 at xx:xx shutdown -s -t 0


2008-11-27 13:39
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: