|
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
状态 离线
|
|
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
状态 离线
|
|
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
状态 离线
|
|
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 |
|