Board logo

标题: [原创]批处理: 定时关机程序 [打印本页]

作者: subi     时间: 2008-11-22 18:00    标题: [原创]批处理: 定时关机程序

这是俺的第一个批处理成果,觉得好帮宣传下.

@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
作者: HAT     时间: 2008-11-22 21:27
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
作者: holucan     时间: 2008-11-22 23:41
不错的批处理,里边还是得使用上shutdown这程序。
作者: HAT     时间: 2008-11-22 23:48    标题: Re 3楼

XP以上的系统自带shutdown.exe
作者: aiqian2008     时间: 2008-11-23 00:29
运行一下,发现一直在循环,cpu100%。一直到指定关机时间才会停
作者: HAT     时间: 2008-11-23 00:55    标题: Re 5楼

请不要把代码保存为shutdown.bat或者shutdown.cmd
试试test.bat
作者: aiqian2008     时间: 2008-11-23 01:09
我把它保存为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
作者: subi     时间: 2008-11-23 10:59
不用循环就能定时的方法, 俺不可能想得出哦.

本程序旨在做出一个定时的思路,   不一定非用于关机呀, 比如定时执行一些程序什么的.
作者: HAT     时间: 2008-11-23 11:00    标题: Re 8楼

参考:批处理中的延时
http://www.cn-dos.net/forum/viewthread.php?tid=8905#pid54227
作者: subi     时间: 2008-11-23 11:48
原来这个思想早有人提出了, 比俺的简略多了, 惭愧.
作者: pooronce     时间: 2008-11-23 13:31
shutdown在锁定状态(欢迎屏幕)下不工作,这问题一直困扰啊。。。
作者: CMStruggling     时间: 2008-11-23 13:35
不知道该脚本在Windows Server 2008系统上是否同样可行?
作者: lcdj888     时间: 2008-11-26 02:14
学习ing
作者: crystal0808     时间: 2008-11-26 11:36
定时关机直接在运行那填入 shutdown -s -t xx 就可以了吧
xx 代表时间,以秒为单位
比如
shutdown -s -t 60,就是一分钟后关机
当然也可以用一些命令来取消定时关机命令
shutdown -a

这些在cmd输入shutdown /?就可以了,也不用整这么麻烦啊
作者: qinchun36     时间: 2008-11-27 13:39
为什么不用

at xx:xx shutdown -s -t 0
作者: cx456852     时间: 2010-7-14 15:00    标题: 为什么不用关机软件呢 可以给大家分享下

自动关机大师定时关机程序是一款功能强大简单好用的电脑自动关机软件,它不但具有自动关机和定时关机的功能,而且还可以进行定时提醒、定时执行文件、定时执行打开程序,定时重启计算机、定时注销用户、定时锁定计算机,并且可以进行定时任务计划,可以满足不同对自动关机用户的需求,这一款电脑自动关机软件简洁大方的界面并提供时间显示,是一款支持多种系统windows2000/xp/vista/2003/win7自动关机软件,自从发布免费下载自动关机软件后,装了它你不再用问电脑如何设置自动关机,非常好用。
电脑定时关机软件功能:1.延时关机功能:可以设在0-100小时内任意选择一时间进行定时关机,准确到几时几分。2.自动关机功能:可以选择不同的日期进行设置,比如明天关机或者当天几点几分关机。3.定时提醒功能:每隔多长时间进行提示一次,防止沉迷电脑忘记休息时间。此功能对一些长期对电脑工作的白领或管教小孩比较有帮助。4.密码功能:软件特意加上一个密码功能,这个密码默认是空的,用户可以随意更改,加了密码后要停止任务或者退出软件要求输入正确的密码后才能停止任务或退出软件。此功能对家长管教小孩非常有用,现在小孩都比较爱玩电脑,有了此功能就强制关闭计算机达到自动关机。5.电脑定时关机软件任务计划:自动关机、锁定计算机、定时重启、定时执行程序等多种功能。
http://www.onlinedown.net/soft/61803.htm
http://www.skycn.com/soft/57660.html
http://www.duote.com/soft/21099.html