![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 04:39 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求1个有如下功能的批处理程序 |
| 可打印版本 1,502 / 14 |
| 第1楼 lulala | 发表于 2006-09-22 04:46 |
| 初级用户 发帖 17 积分 44 | |
|
求1个有如下功能的批处理程序 操作系统2000,执行一次批处理命令,提示用户在dos中输入每天关机时间,然后保存退出。到那个时间就调用另外一个批处理在那时间自动关机,最好是快速的关机那种,可以做到吗?
|
|
| 第2楼 vkill | 发表于 2006-09-22 07:32 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
set /p time
at time shutdown /s /f |
|
| 第3楼 pengfei | 发表于 2006-09-22 09:26 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
注意: win2000下没有shutdown命令, 要使用下面的批处理, 请楼主请先在winxp的%windir%\sysytem32目录下拷贝shutdown.exe到win2000的相应目录.
@echo off :index cls echo ==================================================== echo. echo 请在下面输入每天关机的时间. 格式:(08:22) echo. echo 取消定时关机请直接回车 echo. echo ==================================================== echo. echo. set time_= set /p time_=请输入关机时间后按回车键: if "%time_%"=="" goto cancel :: 判断错误输入___________________________________________________ for /l %%i in (100,1,123) do ( for /l %%a in (100,1,159) do ( if "1%time_:~0,2%"=="%%i" ( if "1%time_:~3,2%"=="%%a" ( goto start ) ) ) ) cls echo 对不起你的输入有误, 请重新输入! echo. pause goto index :: 生成定时关机脚本_______________________________________________ :start if not exist "%ProgramFiles%\timeshut" md "%ProgramFiles%\timeshut" (echo @echo off echo shutdown -s -f -t 30 )>"%ProgramFiles%\timeshut\shut.bat" (echo @echo off echo at /delete /yes echo at %time_% "%ProgramFiles%\timeshut\shut.bat" )>"%ProgramFiles%\timeshut\time.bat" (echo Windows Registry Editor Version 5.00 echo. echo echo "timeshut"="%systemdrive%\\Program Files\\timeshut\\time.bat" echo. echo echo "Start"=dword:00000002 )>run.reg regedit /s run.reg del run.reg call "%ProgramFiles%\timeshut\time.bat" cls echo ======================= echo 每天定时关机已启动. echo ======================= echo. echo. pause exit :: 取消定时关机__________________________________________________ :cancel if exist "%ProgramFiles%\timeshut" rd /s /q "%ProgramFiles%\timeshut" reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v timeshut cls echo ================== echo 定时关机已取消. echo ================== echo. echo. pause 草草写了段, 在XP下测试, 还很不完善. 不足的地方请指正! [ Last edited by pengfei on 2006-9-23 at 04:37 ] |
|
| 第4楼 lulala | 发表于 2006-09-22 11:13 |
| 初级用户 发帖 17 积分 44 | |
|
谢谢你啊,发现个问题一定要重新启动机器后才能实现自动关机,开着的时候把电脑时间再往预备关机时间前调一点就不能关机了
还有好象自动关机的时候读5秒后就黑屏了,看的见鼠标能动,但是就是关不掉,有什么办法吗 [ Last edited by lulala on 2006-9-22 at 11:42 ] |
|
| 第5楼 pengfei | 发表于 2006-09-22 20:24 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
你好!
1. 一定要重启机器才能实现关机, 是因为只有重新启动才能激活计划任务. 修改了代码可以不用重启就激活定时关机的脚本, 但要是你的计划任务没有开启, 还是需要重启电脑的. 2. 把时间再往预备关机时间前调一点就不能关机了. 我想这可能是计划任务的问题. 或者是你测试的时候在两天的临界点 3. 读5秒后就黑屏, 执行了5秒强制关机. 可能系统出了点问题, 这里改为了30自动关闭, 好让应用程序先结束进程, 安全些. [ Last edited by pengfei on 2006-9-23 at 02:45 ] |
|
| 第6楼 lulala | 发表于 2006-09-22 21:34 |
| 初级用户 发帖 17 积分 44 | |
|
我应该谢谢你才对,问题已经解决,程序非常好,太谢谢拉!!
就是在2000下面的时候系统提示您可以安全的关闭计算机了,还要按电源再关,而不是自己关,有什么办法吗 [ Last edited by lulala on 2006-9-22 at 21:46 ] |
|
| 第7楼 jieok3375 | 发表于 2006-09-22 23:08 |
| 中级用户 发帖 130 积分 282 来自 广东 | |
|
好好学习。。天天向上啊。。。
偶收了,,慢慢看。。。 |
|
| 第8楼 pengfei | 发表于 2006-09-23 01:46 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
Originally posted by lulala at 2006-9-22 21:34: 这个我也没测试过. 建议楼主把标题改一下, 如win2000下的定时关机脚本... |
|
| 第9楼 lulala | 发表于 2006-09-23 04:04 |
| 初级用户 发帖 17 积分 44 | |
|
我懂拉,就是每次重新启动后,任务里就多出个任务,原来的任务还在,有at1,at2,at3....,会自动删除吗
|
|
| 第10楼 pengfei | 发表于 2006-09-23 04:39 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
是的, 如果你一天反复启动几次电脑, 所添加的计划任务将向后移.
新建一个计划任务同时删除先前任务的代码已经加入. at /delete /yes |
|
| 第11楼 lulala | 发表于 2006-09-23 10:23 |
| 初级用户 发帖 17 积分 44 | |
|
thx,我试试
|
|
| 第12楼 lotus516 | 发表于 2006-09-25 11:56 |
| 高级用户 发帖 246 积分 551 | |
|
for /l %%i in (100,1,123) do (
for /l %%a in (100,1,159) do ( if "1%time_:~0,2%"=="%%i" ( if "1%time_:~3,2%"=="%%a" ( goto start ) ) ) ) 高手们这几代码不太看的懂,请解释一下!! |
|
| 第13楼 namejm | 发表于 2006-09-25 12:35 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re lotus516:
pengfei那段代码的功能是检测小时数和分钟数的输入是否正确。 因为小时数最大不能超过23,分钟数最大不能超过59,而且,输入格式要求,如果小时数如果小于10的话,前面必须带一个0,所以,就用 for 语句中的 /l 开关来取100到123的数字,然后通过在小时数的开头添个1来和 %%i 的值来做比较,如果在那个范围之内,则表明小时数输入正确;对分钟数的输入检测也是同样的道理。 |
|
| 第14楼 zh159 | 发表于 2006-09-26 02:13 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
我也来一个:
使用“任务计划”来执行,不需要重启系统即可生效 先“开始菜单-附件-系统工具-计划任务-高级菜单-开始启用高级计划任务程序”,已经开启计划任务的就不用设置了 注意,“schtasks”、“任务计划”需要当前用户设置密码才能使用 “set 密码=”设置密码,也可以后期输入 借用 pengfei 一部分代码修改(效率高些): if "%time_:~2,1%"==":" ( 先判断输入的时间格式是否是包含有“:”的格式,再判断“小时”是否超过“23”,判断“小时”正确后再判断分钟数是否超过“59” [ Last edited by zxcv on 2006-9-25 at 14:17 ] |
|
| 第15楼 vkill | 发表于 2006-09-26 02:18 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
貌似还需要检查下 任务计划的服务有 没有开吧!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |