中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 04:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]批处理: 定时关机程序 查看 2,836 回复 15
楼 主 [原创]批处理: 定时关机程序 发表于 2008-11-22 18:00 ·  中国 广西 中移铁通
新手上路
积分 6
发帖 4
注册 2008-11-22 14:32
UID 131755
性别 男
状态 离线
这是俺的第一个批处理成果,觉得好帮宣传下.

@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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
HAT +2 2008-11-22 21:27
2 发表于 2008-11-22 21:27 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
3 发表于 2008-11-22 23:41 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 26
发帖 25
注册 2008-11-07 16:06
UID 130293
性别 男
状态 离线
不错的批处理,里边还是得使用上shutdown这程序。
4 Re 3楼 发表于 2008-11-22 23:48 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
XP以上的系统自带shutdown.exe
5 发表于 2008-11-23 00:29 ·  中国 福建 福州 电信
初级用户
积分 35
发帖 22
注册 2008-10-11 01:13
UID 128044
性别 男
状态 离线
运行一下,发现一直在循环,cpu100%。一直到指定关机时间才会停
6 Re 5楼 发表于 2008-11-23 00:55 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
请不要把代码保存为shutdown.bat或者shutdown.cmd
试试test.bat
7 发表于 2008-11-23 01:09 ·  中国 福建 福州 电信
初级用户
积分 35
发帖 22
注册 2008-10-11 01:13
UID 128044
性别 男
状态 离线
我把它保存为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
8 发表于 2008-11-23 10:59 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
新手上路
积分 6
发帖 4
注册 2008-11-22 14:32
UID 131755
性别 男
状态 离线
不用循环就能定时的方法, 俺不可能想得出哦.

本程序旨在做出一个定时的思路, 不一定非用于关机呀, 比如定时执行一些程序什么的.
9 Re 8楼 发表于 2008-11-23 11:00 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
10 发表于 2008-11-23 11:48 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
新手上路
积分 6
发帖 4
注册 2008-11-22 14:32
UID 131755
性别 男
状态 离线
原来这个思想早有人提出了, 比俺的简略多了, 惭愧.
11 发表于 2008-11-23 13:31 ·  中国 上海 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
UID 90372
性别 男
状态 离线
shutdown在锁定状态(欢迎屏幕)下不工作,这问题一直困扰啊。。。
12 发表于 2008-11-23 13:35 ·  中国 江苏 苏州 电信
新手上路
积分 14
发帖 8
注册 2008-11-14 15:44
UID 130965
性别 男
状态 离线
不知道该脚本在Windows Server 2008系统上是否同样可行?
13 发表于 2008-11-26 02:14 ·  中国 广东 佛山 电信
新手上路
积分 1
发帖 1
注册 2008-07-10 04:02
UID 121304
性别 男
状态 离线
学习ing
14 发表于 2008-11-26 11:36 ·  中国 江苏 南京 电信
新手上路
积分 6
发帖 20
注册 2008-11-25 16:08
UID 132064
性别 男
状态 离线
定时关机直接在运行那填入 shutdown -s -t xx 就可以了吧
xx 代表时间,以秒为单位
比如
shutdown -s -t 60,就是一分钟后关机
当然也可以用一些命令来取消定时关机命令
shutdown -a

这些在cmd输入shutdown /?就可以了,也不用整这么麻烦啊
15 发表于 2008-11-27 13:39 ·  中国 北京 联通
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
UID 116706
性别 男
状态 离线
为什么不用

at xx:xx shutdown -s -t 0
论坛跳转: