中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 22:39
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 自动关机的批处理,哪个高手帮忙改进一下 查看 1,109 回复 10
楼 主 自动关机的批处理,哪个高手帮忙改进一下 发表于 2006-12-28 02:42 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 83
发帖 35
注册 2006-10-30 14:47
19年会员
UID 68886
性别 男
来自 广东
状态 离线
做了一个自动关机的批处理,但时间以秒为单位,比较麻烦,能否改进一下

@echo off
set /p time=请设置关机时间(必须以秒为单位):
SHUTDOWN -S -T %time%
@ECHO 任务完成,%time%秒后自动关闭计算机!
ping -n 1 127.0.0.1 >nul
exit
求学永无止境!
2 发表于 2006-12-28 03:17 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  改进哪些东西呢?说具体一点。
3 发表于 2006-12-28 03:36 ·  中国 广西 柳州 柳北区 电信
初级用户
★★
积分 168
发帖 78
注册 2006-12-27 09:58
19年会员
UID 74699
性别 男
状态 离线
直接用-t指定时间不就好了?

不过我不明白最后为什么要用ping -n 1 127.0.0.1呢?
4 发表于 2006-12-28 06:40 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 83
发帖 35
注册 2006-10-30 14:47
19年会员
UID 68886
性别 男
来自 广东
状态 离线
Originally posted by applecy at 2006-12-28 03:36 AM:
直接用-t指定时间不就好了?

不过我不明白最后为什么要用ping -n 1 127.0.0.1呢?


三楼说的不清楚。。
ping -n 1 127.0.0.1 起延时作用 啊
求学永无止境!
5 发表于 2006-12-28 06:58 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线

@echo off
set /p time=请设置关机时间(必须以分钟为单位):
set /a ftime=%time%*60
SHUTDOWN -S -T %ftime%
@ECHO 任务完成,%time%秒后自动关闭计算机!
ping -n 1 127.0.0.1 >nul
exit
6 发表于 2006-12-28 10:43 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
对不起,我改进了一下

@echo off
set /p second=请设置关机时间(以秒为单位可以的):
set /a minute=%second%*60 (这个可要可不要,就看你怎么想的)
SHUTDOWN -S -T %minute%
@ECHO 任务完成,%minute%秒后自动关闭计算机!
exit
7 发表于 2006-12-28 23:15 ·  中国 广西 北海 电信
初级用户
积分 54
发帖 18
注册 2005-11-05 01:38
20年会员
UID 44610
状态 离线
@echo off
echo [定时关机]
echo.
IF not EXIST %SystemRoot%\system32\shutdown.exe echo 没有发现shutdown.exe,程序将终止!& goto :end
:back
echo ------------------------------
echo 你要在几分钟之后关闭计算机?
set /p shuttime=请在提示符后输入[单位:分钟]
echo %shuttime%|findstr "^[0-9]*$" >nul
if %ERRORLEVEL% EQU 1 echo 错误!请输入数字。& goto back
if %shuttime% GTR 5100000 echo 出错了,请输入1~5100000之间。& goto back
set /a shutmiao=%shuttime%*60
shutdown -s -f -c "计算机将在%shuttime%分钟后关闭,请及时保存你手头的工作。" -t %shutmiao%
echo.
set /p escs=是否要取消关机,是请按[Y]
echo ------------------------------
echo %escs%|findstr "^[Yy]*$" >nul
if %ERRORLEVEL% EQU 0 shutdown -a
:end
echo 按任意键退出。
pause>nul
exit
8 发表于 2006-12-28 23:21 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
哦,好麻烦啊

呵呵

不过还是有东西学啊 "findstr",好东西啊!
9 发表于 2006-12-28 23:49 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
set /a /p time=
if %time%==0 "叫他重输"
10 发表于 2006-12-29 12:18 ·  中国 广西 柳州 电信
初级用户
★★
积分 168
发帖 78
注册 2006-12-27 09:58
19年会员
UID 74699
性别 男
状态 离线
我有个思路``不知道行不``
判断输入的字符如果不是数字的话跳转重新输入
这样的话可以省去不少功夫``

不知道可以实现不?还望指教
11 发表于 2006-12-29 13:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by applecy at 2006-12-28 23:18:
我有个思路``不知道行不``
判断输入的字符如果不是数字的话跳转重新输入
这样的话可以省去不少功夫``

不知道可以实现不?还望指教


  7楼的代码中已经有这个功能了。
论坛跳转: