中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 01:40
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创]批处理: 定时关机程序
可打印版本  3,056 / 15
第1楼 subi 发表于 2008-11-22 18:00
新手上路 发帖 4 积分 6
[原创]批处理: 定时关机程序
这是俺的第一个批处理成果,觉得好帮宣传下.

@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 发表于 2008-11-22 21:27
版主 发帖 5,017 积分 9,023
第3楼 holucan 发表于 2008-11-22 23:41
初级用户 发帖 25 积分 26
不错的批处理,里边还是得使用上shutdown这程序。
第4楼 HAT 发表于 2008-11-22 23:48
版主 发帖 5,017 积分 9,023
Re 3楼
XP以上的系统自带shutdown.exe
第5楼 aiqian2008 发表于 2008-11-23 00:29
初级用户 发帖 22 积分 35
运行一下,发现一直在循环,cpu100%。一直到指定关机时间才会停
第6楼 HAT 发表于 2008-11-23 00:55
版主 发帖 5,017 积分 9,023
Re 5楼
请不要把代码保存为shutdown.bat或者shutdown.cmd
试试test.bat
第7楼 aiqian2008 发表于 2008-11-23 01:09
初级用户 发帖 22 积分 35
我把它保存为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楼 subi 发表于 2008-11-23 10:59
新手上路 发帖 4 积分 6
不用循环就能定时的方法, 俺不可能想得出哦.

本程序旨在做出一个定时的思路, 不一定非用于关机呀, 比如定时执行一些程序什么的.
第9楼 HAT 发表于 2008-11-23 11:00
版主 发帖 5,017 积分 9,023
Re 8楼
第10楼 subi 发表于 2008-11-23 11:48
新手上路 发帖 4 积分 6
原来这个思想早有人提出了, 比俺的简略多了, 惭愧.
第11楼 pooronce 发表于 2008-11-23 13:31
中级用户 发帖 250 积分 484
shutdown在锁定状态(欢迎屏幕)下不工作,这问题一直困扰啊。。。
第12楼 CMStruggling 发表于 2008-11-23 13:35
新手上路 发帖 8 积分 14
不知道该脚本在Windows Server 2008系统上是否同样可行?
第13楼 lcdj888 发表于 2008-11-26 02:14
新手上路 发帖 1 积分 1
学习ing
第14楼 crystal0808 发表于 2008-11-26 11:36
新手上路 发帖 20 积分 6
定时关机直接在运行那填入 shutdown -s -t xx 就可以了吧
xx 代表时间,以秒为单位
比如
shutdown -s -t 60,就是一分钟后关机
当然也可以用一些命令来取消定时关机命令
shutdown -a

这些在cmd输入shutdown /?就可以了,也不用整这么麻烦啊
第15楼 qinchun36 发表于 2008-11-27 13:39
高级用户 发帖 400 积分 609
为什么不用

at xx:xx shutdown -s -t 0
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023