中国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: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:http://www.cn-dos.net/forum/faq.php?page=misc#1



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楼

参考:批处理中的延时
http://www.cn-dos.net/forum/viewthread.php?tid=8905#pid54227



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] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: