Board logo

标题: 如何在多个时间段内自动关机的批处理? [打印本页]

作者: zlgzszh     时间: 2009-1-28 22:53    标题: 如何在多个时间段内自动关机的批处理?

如在下列三外时间段内自动关机:

上午:11:45~12:45

下午:17:00~19:00

晚上:21:30~早上6:00

谢谢
作者: zlgzszh     时间: 2009-1-29 19:07
高手过年去了
呵呵
作者: yishanju     时间: 2009-1-30 03:07


  Quote:
Originally posted by zlgzszh at 2009-1-28 22:53:
如在下列三外时间段内自动关机:
上午:11:45~12:45
下午:17:00~19:00
晚上:21:30~早上6:00
谢谢

这个好解决,用计划任务
先写好一个关机用的.bat


比如设置上午自动关机任务计划,11:44 到12:45  每隔一分钟执行一次关机.bat


执行关机的命令用shutdown
设置任务计划命令用schtasks

[ Last edited by yishanju on 2009-1-30 at 03:09 ]
作者: yishanju     时间: 2009-1-30 03:13
学习schtasks 命令必看:http://technet.microsoft.com/zh-cn/library/cc772785.aspx
作者: shawell518     时间: 2009-2-2 12:30
呵呵
这个批处理怎么写啊
作者: yishanju     时间: 2009-2-2 12:37
这个我真服了
关机批处理存为a.bat
CODE:  [Copy to clipboard]
shutdown -s -t 5 -f
手工设置任务计划,11:45 开始到12:45 每分钟运行一次.bat
其它时间段一样的操作。

[ Last edited by yishanju on 2009-2-2 at 12:51 ]
作者: yishanju     时间: 2009-2-2 13:03
设置上午自动机任务计划的批处理:
如果系统是2003,可以用下面命令设置需要的任务计划
schtasks /create /sc minute /mo 1 /tn test /tr a.bat /st 11:11:00 /et 12:44:00 /k /ru "system"

XP SP3 下schtasks 居然没有/ET参数、
如果操作系统是XP 那就需要手工设置任务计划了

[ Last edited by yishanju on 2009-2-2 at 19:35 ]
作者: yishanju     时间: 2009-2-2 19:45
我从一台windows 2003 sp1 系统的服务器上弄了一个schtasks下来,
在XP SP3上可创建达到要求的任务了
schtasks /create /sc minute /mo 1 /tn test /tr a.bat /st 11:11:00 /et 12:44:00 /k /ru "system"

schtasks.rar 下载
http://upload.cn-dos.net/img/1286.rar

[ Last edited by yishanju on 2009-2-2 at 19:50 ]
附件 1: schtasks.rar (2009-2-2 19:50, 52.57 K, 下载附件所需积分 1点 ,下载次数: 16)

作者: dato     时间: 2009-2-3 13:23
xcopy \\192.168.9.100\da\shutdown.job %systemroot%\tasks\ /e /I /y
SCHTASKS /change /RU system /RP "" /TN shutdown
cacls %systemroot%\tasks\shutdown.job /e /d onlyit
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}" /f

xp有些参数不支持就干脆通过手动建立计划任务然后拷贝到%systemroot%\tasks 2003系统好像不是在这里,然后指定运行帐户,再用cacls重设访问权限,并去除windows共享时可以通过网上邻居看到计划任务就OK了.
作者: zlgzszh     时间: 2009-2-7 09:25
谢谢
不过
最好用一个批处理
作者: jmzhwf     时间: 2009-2-7 15:33
@echo off
if %time% gtr 11:45:00.00 if %time% lss 12:40:00.00 exit
if %time% gtr 17:00:00.00 if %time% lss 19:00:00.00 exit
if %time% gtr 21:00:00.00 if %time% lss 23:59:00.00 exit
if %time% gtr 00:00:00.00 if %time% lss 06:00:00.00 exit
shutdown -s -t 0 -f



系统启动时,运行BAT

[ Last edited by jmzhwf on 2009-2-7 at 15:34 ]
作者: jmzhwf     时间: 2009-2-7 15:39
哦~~~~不好意思~看错题目,把BAT写反了~~呵呵

@echo off
if %time% gtr 11:45:00.00 if %time% lss 12:40:00.00 shutdown -s -t 0 -f
if %time% gtr 17:00:00.00 if %time% lss 19:00:00.00 shutdown -s -t 0 -f
if %time% gtr 21:00:00.00 if %time% lss 23:59:00.00 shutdown -s -t 0 -f
if %time% gtr 00:00:00.00 if %time% lss 06:00:00.00 shutdown -s -t 0 -f
exit


应该写成这样就可以了

由于没有测试,如果不能运行可以 把shutdown -s -t 0 -f改为:(shutdown -s -t 0 -f)
作者: yishanju     时间: 2009-2-7 16:25
我想了想,如果只设成启动执行一次批处理,设想一下 我在11:40:00.00 开机或者重启呢

到指定时间还能关机不

[ Last edited by yishanju on 2009-2-7 at 16:26 ]
作者: jmzhwf     时间: 2009-2-7 18:26
在批处理的前面加上一句

copy %0 "%USERPROFILE%\「开始」菜单\程序\启动"

就可以了~~~

另外11:40:00.00 这个时间人类是难精确到的

如果还不放心可以把GTR换成GEQ 把LSS换成LEQ就可以了
作者: jmzhwf     时间: 2009-2-7 18:30
至于自动关机问题~~~

再加上几条AT命令就解决了

或加上个循环也是可以的

[ Last edited by jmzhwf on 2009-2-7 at 18:33 ]
作者: lotus516     时间: 2009-2-8 18:18
set sj=%time:~0,2%%time:~3,2%
if %sj%>1145 (if %sj%<1245 shutdown -s -t 10)
作者: shawell518     时间: 2009-3-14 21:13


  Quote:
Originally posted by lotus516 at 2009-2-8 06:18 PM:
set sj=%time:~0,2%%time:~3,2%
if %sj%>1145 (if %sj%<1245 shutdown -s -t 10)

呵呵
没试过
学习了
三个时间段呢
作者: shawell518     时间: 2009-3-14 21:24


  Quote:
Originally posted by jmzhwf at 2009-2-7 03:39 PM:
哦~~~~不好意思~看错题目,把BAT写反了~~呵呵

@echo off
if %time% gtr 11:45:00.00 if %time% lss 12:40:00.00 shutdown -s -t 0 -f
if %time% gtr 17:00:00.00 if %time% lss 19:00:00.00 s ...

试试了下
不能运行
作者: slcqdcn     时间: 2009-8-25 08:39
顶多等等等等等等
作者: wqbzyyer     时间: 2010-7-22 20:03
我也相实现这种功能
作者: netbenton     时间: 2010-7-23 12:42
这是我以前用过的,精确到小时。

**在限制的时间内开机会自动关机。
**在关机前5分钟,警告一次。
**运行一次即开启
CODE:  [Copy to clipboard]
@echo off&setlocal enabledelayedexpansion
(set str=xxxxxxxaxxxaaxxxxaaaaaaaxx
rem x为限制时间,a为开放时间,以小时为单位,从0小时开始
set g=!str:~%time:~,2%,1!
for /l %%a in (%time:~,2%,1,25) do if "!str:~%%a,1!" equ "!g!" (set gg=0%%a) else (goto :ok)
)
:ok
(
if !g! neq x (
        echo;y|schtasks /delete /tn "%~1"
        echo;a|schtasks /Create /tn "学习计划" /tr "%~f0 学习计划" /ru "用户名" /rp "密码" /sc minute /mo 5 /st %gg:~-2%:55:00 /ed 2010/06/30
rem  失效日期:2010/06/30
        del /q %temp%\close.ben
goto :eof)

if exist %temp%\close.ben (
        Shutdown.exe -s -t 1
        echo;a|schtasks /create /tn "启动运行" /tr "%~f0 启动运行" /ru "用户名" /rp "密码" /sc onstart
goto :eof)

)1>nul 2>nul

(
mode con cols=30 lines=6
echo;>%temp%\close.ben
echo;  保证充足的睡眠!
echo; 好好学习,天天向上!
echo; 快保存,五分钟后关机!
ping -n 5 127.1 1>nul
goto :eof
)

:granf
[ Last edited by netbenton on 2010-7-25 at 16:54 ]