用系统自带指令实现 Windows XP/2003 定时自动关机
今天有人问到如何实现定时自动关机,给出了用at和shutdown指令实现的方法,我自己常用的是PowerOff软件来实现,试了下at
指令,发现还是挺方便的。
先说下系统自带的关机指令,很多人应该已经知道了,就是shutdown,不带参数执行将会列出它的参数,常用参数为:
-s 关闭计算机
-r 关闭并重启动计算机
-f 强制正在运行的应用程序关闭而不事先警告用户
-t xxx 设置关闭前的超时为 xxx 秒,默认为 30
另外,在倒计时过程输入shutdown /a可以取消关机或重启,不加/t参数执行则倒计时30秒。
一般需要立即关机可以这样写:(将/s参数换成/r参数就是立即重启)
shutdown -f -s -t 0
shutdown支持对远程计算机进行操作,需要使用-m参数,如:
shutdown -f -s -m \\\\test
在30秒后强制将局域网中名为test的计算机关闭
再说下at指令,它的作用是计划在指定时间和日期在计算机上运行命令和程序。在命令行下输入at /?将列出它的帮助信息,在“帮助和支持中心”里有更详细的解释及示例。
假设想实现晚上23:30自动关机,可以这么写:
at 23:30 shutdown -f -s -t 0
成功的话会有类似这样的信息回应:新加了一项作业,其作业 ID = 1
要取消这个定时关机的话,有两种方法
方法一、命令行
不带任何参数执行at,将会列出已经设定的内容,记下状态ID号,比如本例为1,然后输入:
at 1 /delete
也可以简写为:
at 1 /d
不加序列号使用/d参数将会删除所有设定的内容,如果想不经确认删除所有设定的内容,可用:at /d /y
方法二、任务计划
用at指令设定的定时执行指令可在“控制面板”的“任务计划”中看到,要取消的话删除就行了。
如果你只是临时用用,比如只是当天需要定时自动关机,用上述指令就行了。如果需要在一个月中的某几天或每周一甚至是每天执
行,就需要再加点参数,仍然举例说明。
例1、每月的1、5、10、15、20号的0点自动关机
at 00:00 /every:1,5,10,15,20 shutdown -f -s -t 0
例2:每周一的23:00自动关机
at 23:00 /every:Monday shutdown /f /s /t 0
例3:每天22:00自动关机
at 22:00 /every:Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday shutdown -f -s -t 0
即使用every参数,例3中的每天自动关机可以简写为:
at 22:00 /every:Su,M,T,W,Th,F,Sa shutdown -f -s -t 0
最后解释一下这些命令是在XP/2003,Windows 2000是不自带shutdown指令的(当然从XP/2003系统里复制一个过去也能用),我的机器上也没装Windows 2000,不知道在2000里是否自带at指令。
另,用at指令而不是在任务计划里添加是因为用at指令添加的任务是以系统最高的SYSTEM权限来执行的,不登录也会生效,而在任务计划里添加的任务需要指定管理员帐号密码才能做到不登录也生效,at指令还能用\\\\computername指定在局域网里的其它计算机上建立自动执行的任务计划,当然前提条件是你有对方机器的管理员帐号和密码。
补充二点:
1、用以上命令,并命令执行时,系统进入关机倒计时。这时,如果正在工作,不需要关机,那马上在倒计时设置时间内运行“shutdown.exe -a”中止关机命令。也可以建立一个这个命令的快捷方式在桌面上,方便使用。
2、拷贝Shutdown.exe到2000系统下AT命令完全可以使用,包括Win2000、Win2000Server。
用at配合shutdown命令非常方便。
比如要在晚上22:00关机,可以使用at 22:00 shutdown -s -f
附:ShutDown用法及参数
用法: shutdown [-i | -l | -s | -r | -a] [-f] [-m \computername] [-t xx] [-c 'comment'] [-d up:xx:yy]
没有参数 显示此消息(与 ? 相同)
-i 显示 GUI 界面,必须是第一个选项
-l 注销(不能与选项 -m 一起使用)
-s 关闭此计算机
-r 关闭并重启动此计算机
-a 放弃系统关机
-m \computername 远程计算机关机/重启动/放弃
-t xx 设置关闭的超时为 xx 秒
-c 'comment' 关闭注释(最大 127 个字符)
-f 强制运行的应用程序关闭而没有警告
-d [p]:xx:yy 关闭原因代码
u 是用户代码
p 是一个计划的关闭代码
xx 是一个主要原因代码(小于 256 的正整数)
yy 是一个次要原因代码(小于 65536 的正整数)
-f:强行关闭应用程序
-m \计算机名:控制远程计算机
-i:显示图形用户界面,但必须是Shutdown的第一个选项
-l:注销当前用户
-r:关机并重启
-t时间:设置关机倒计时
-c '消息内容':输入关机对话框中的消息内容(不能超127个字符
2、举例:
关闭计算机 shutdown –s (方法:”开始”->”运行”->”shutdown -s”->”确定”)
延迟3秒关闭计算机 shutdown –s –t 3(方法:”开始”->”运行”->”shutdown –s –t 3”->”确定”)
取消关闭计算机 shutdown –a (方法:”开始”->”运行”->”shutdown –a”->”确定”)
3、应用:
(1)您如果想在1小时后自动关闭计算机,比如:您正在下载一个软件或一部电影,而您有急事要去丽水,您会怎么办?停止下载
?太可惜了!继续?下载完后电脑怎么关闭?不用愁!您可以使用该命令解决:
shutdown –s –t 3600 (系统在3600秒后关闭计算机,时间自定)
您就放心地去丽水了,而不用担心您的计算机长期开着了。
(2)出现RPC漏洞而导致倒计时自动关机,使用该命令取消倒计时自动关机:
shutdown –a (方法:”开始”->”运行”->”shutdown –a”->”确定”)
前一段时间的网络病毒非常猖獗,如震荡波、冲击波等就是针对WindowsXP的RPC(远程过程调用)漏洞设计的,它导致系统倒计时
自动关机,很多同学、老师头痛不已。如下图:
(3)利用Shutdown命令 实现网络统一关机
笔者所在单位下班后常有很多老师不关电脑,领导发现后要求解决这个问题。我想如果到各办公室去查看,这很费时,于是就想能
否通过一台电脑把所有的机 器都关掉。因为所有的办公用机安装的都是Windows XP系统,就想到了使用远程关机“Shutdown”
命令。具体方法如下:
步骤1 单击“开始→运行”,在对话框中输入“Gpedit.msc”,单击[确定],打开“组策略编辑器”。
步骤2 在“组策略编辑器”窗口的左边打开“计算机配置→Windows设置→安全设置→本地策略→用户权利指派”,在右边的窗口
选择“从远端系统强制关机”。在 弹出的对话框中显示目前只有“Administrators”组的成员才有权远程关机;单击对话框下
方的[添加用户或组]按钮,然后在弹出的对话框中输入 “Heyongsheng”(管理员账号),再单击[确定]。
步骤3 这时在“从远端系统强制关机”的属性中便添加了一个“Heyongsheng”用户,单击[确定],最后关闭“组策略编辑器”
窗口。
对各办公室的电脑进行上述操作后,我们便给每台计算机的“Heyongsheng”用户授予了远程关机的权限。到下班时,我只要在自
己的机器上进行以下操作:
步骤4单击“开始→运行”,在对话框中输入“Shutdown -I”,屏幕上将显示“远程关机”对话框(图1)。
图1 远程关机控制窗口
(4)用XP的ShutDown.exe实现服务器定时重启
Windows XP的关机是由Shutdown.exe程序来控制的,位于WindowsSystem32文件夹中。如果想让Windows 2000也实现同样的效
果,可以把Shutdown.exe复制到系统目录System32下。
首 先当然要求主板必须支持软件关机功能,否则你还得亲自去按电源开关才能关机,现在的主板一般都支持软件关机。操作步骤
:单击“开始”/程序/附件/系统工 具中'计划任务',弹出计划任务窗口,然后双击'添加已计划的任务',运行“计划任务向导
”,按“浏览”,找到WINDOWS目录中的 Rundll32.exe 文件,单击'打开'按钮,在出现的对话框中键入该任务的名字(如'定时
关机'),执行方式选择“每天” ,然后按“下一步”选择定时关机时间(可以先试一下比现在机器上显示的时间晚1分钟),下一
步选中“当单击完成打开该任务的高级属性”,单击'完成',最 后右击'定时关机'来打开属性,在运行栏输入
“C:WINNTsystem32shutdown.exe -r -t 1”,单击'确定'不久,OK了。
4.结论:WindowsXP中的shutdown命令功能很强大,你可以去尝试使用,挖掘出功能,为我们服务。创建个快截方式 地址里输入
shutdown -t -s 3600
然后把他复制到 开始 程序 启动里
或者 在 注册表的 run 项目下 加入 这个快截方式的 地址
你也可以放在boot.inf里的lood 语句中
还可以用批 处理
vbs 文件
用vbs文件的好处是可以后台运行控制时间不向你的破语句
输入shutdown -a
第二部分
让Windows 2000/XP自动关机
Windows XP的关机是由Shutdown.exe程序来控制的,位于Windows\System32文件夹中。如
果想让Windows 2000也实现同样的效果,可以把Shutdown.exe复制到系统目录下。
比如你的电脑要在22:00关机,可以选择“开始→运行”,输入“at 22:00 Shutdown -s”,
这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工
作。如果你想以倒计时的方式关机,可以输入“Shutdown.exe -s -t 3600”,这里表示60
分钟后自动关机,“3600”代表60分钟。
设置好自动关机后,如果想取消的话,可以在运行中输入“shutdown -a”。另外输入
“shutdown -i”,则可以打开设置自动关机对话框,对自动关机进行设置。
Shutdown.exe的参数,每个都具有特定的用途,执行每一个都会产生不同的效果,比如
“-s”就表示关闭本地计算机,“-a”表示取消关机操作,下面列出了更多参数,大家
可以在Shutdown.exe中按需使用。
-f:强行关闭应用程序
-m \\计算机名:控制远程计算机
-i:显示图形用户界面,但必须是Shutdown的第一个选项
-l:注销当前用户
-r:关机并重启
-t 时间:设置关机倒计时
-c '消息内容':输入关机对话框中的消息内容(不能超127个字符)
有时候,我们需要定时关闭计算机,下面介绍一个在Windows XP下实现定时关机的简单方
法。
指定系统在22分钟后自动关闭:点击“开始→运行”,在“打开”中输入命令“Shutdown
-s -t 1320”(注意:引号不输入,参数之间有空格,1320的单位是秒),单击“确定”
按钮即可。
指定系统在某个时间(比如12:00)自动关闭:在“打开”中输入命令
“at 12:00 Shutdown -s”即可。
取消定时关机:在“打开”中输入命令“Shutdown -a”即可。
能的实现都是使用“Shutdown”命令实现的,shutdown的参数是在命令行窗口中输入
“shutdown”。笔者认为最有用的是“-i”参数,可以调出“远程关机对话框”,
能方便地实现局域网内计算机的远程关机,有兴趣的朋友可以试一试。
开始-程序-附件-系统工具-计划任务-添加任务计划-下一步-浏览
-c:\windows\system32\shadow.exe-下一步-选好要关机的时间,
下一步-输入用户名和密码,只要是系统里有的用户就行,但一定要有密码,
没有也要设一个,下一步,选上“在完成时打开此任务的高级属性”,
在运行栏后面加上“ -S”引号不要哦。
1,先确认任务计划服务已启动:打开“控制面板”>“管理工具”>“服务”,
找到“Task Scheduler”,确认其启动类型为“自动”,服务状态为“已启动”。
2,生成任务:点“开始”菜单>“运行”,输入如下命令:
引用内容
at 6:30 /every:m,t,w,th,f,s,su shutdown -s
这样一个关机任务就在生成了,可以到“控制面板”>“任务计划”查看,通常任务名称为
“At1”。其含义为在每天的6点30分关闭计算机。更多 at 命令的使用方法可以参阅
enet.com.cn 的关于 at 命令的专门文章。也可以在 DOS 窗口输入 at/? 查看帮助,
用到的 shutdown 命令也同样通过 shutdown/? 可以了解更多的设置方法。
3,关机时会有提示窗出现,如果想取消关闭操作可以在“开始”菜单>“运行”,
输入命令:shutdown -a
参考资料
第三部分
在WindowsXP中实现远程关机
在Windows XP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可
以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。
该命令的语法格式如下:
shutdown [-i |-l|-s |-r |-a] [-f] [-m [\\ComputerName]] [-t xx] [-c 'message'] [-d[p]:xx:yy]
其中,各参数的含义为:
-i 显示图形界面的对话框。
-l 注销当前用户,这是默认设置。
-m ComputerName优先。
-s 关闭计算机。
-r 关闭之后重新启动。
-a 中止关闭。除了-l 和ComputerName 外,系统将忽略其它参数。在超时期间,您只可以使用-a。
-f 强制运行要关闭的应用程序。
-m [\\ComputerName] 指定要关闭的计算机。
-t xx 将用于系统关闭的定时器设置为 xx 秒。默认值是20秒。
-c 'message' 指定将在“系统关闭”窗口中的“消息”区域显示的消息。最多可以使用127 个字符。引号中必须包含消息。
-d [p]:xx:yy 列出系统关闭的原因代码。
首先,我们来看一下该命令的一些基本用法:
1、注销当前用户
shutdown - l
该命令只能注销本机用户,对远程计算机不适用。
2、关闭本地计算机
shutdown - s
3、重启本地计算机
shutdown - r
4、定时关机
shutdown - s -t 30
指定在30秒之后自动关闭计算机。
5、中止计算机的关闭
有时我们设定了计算机定时关机后,如果出于某种原因又想取消这次关机操作,就可以用 shutdown - a 来中止。如:
shutdown -s –t 300 设定计算机在5分钟后关闭。
Shutdown –a 取消上述关机操作。
以上是shutdown命令在本机中的一些基本应用。前面我们已经介绍过,该命令除了关闭、重启本地计算机外,更重要的是它还能对远程计算机进行操作,但是如何才能实现呢?
在该命令的格式中,有一个参数[-m [\\ComputerName],用它可以指定将要关闭或重启的计算机名称,省略的话则默认为对本机操作。您可以用以下命令来试一下:
shutdown –s –m \\sunbird -t 30
在30秒内关闭计算机名为sunbird的机器;注:sunbird为局域网内一台同样装有Windows XP的电脑。
但该命令执行后,计算机sunbird一点反应都没有,但屏幕上却提示“Access is denied (拒绝访问)”。
为什么会出现这种情况呢?原来在Windows XP默认的安全策略中,只有管理员组的用户才有权从远端关闭计算机,而一般情况下我们从局域网内的其他电脑来访问该计算机时,则只有guest用户权限,所以当我们执行上述命令时,便会出现“拒绝访问”的情况。
找到了问题的根源之后,解决的办法也很简单,您只要在客户计算机(能够被远程关闭的计算机,如上述sunbird)中赋予
guest用户远程关机的权限即可。这可利用Windows XP的“组策略”或“管理工具”中的“本地安全策略”来实现。下面以“组
策略”为例进行介绍:
1、单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,然后单击“确定”,即可打开组策略编辑器。
2、在“组策略”窗口的左侧窗格中逐级展开“计算机配置”→“Windows 设置”→“安全设置”→“本地策略”→“用户权利指
派”。
3、在“组策略”窗口的右侧窗格中选择“从远端系统强制关机”,通过双击将其打开。
4、在弹出的对话框中显示目前只有“Administrators”组的成员才有权从远程关机;单击对话框下方的“添加用户或组”按钮,然后在新弹出的对话框中输入“guest”,再单击“确定”按扭。如图9所示。
5、这时在“从远端系统强制关机”的属性中便添加了一个“guest”用户,单击“确定”即可。
6、关闭“组策略”窗口。
通过上述操作后,我们便给计算机sunbird的guest用户授予了远程关机的权限。以后,倘若您要远程关闭计算机sunbird,只要在网络中其他装有Windows XP的计算机中输入以下命令即可:
shutdown -s –m \\sunbird -t 30 (其他参数用法同上)
这时,在sunbird计算机的屏幕上将显示一个“系统关机”的对话框,提示“系统即将关机。请保存所有正在运行的工作,然后注销。未保存的改动将会丢失。关机是由sunbird\guest初始的。”在对话框下方还有一个计时器,显示离关机还有多少时间。在等待关机的时间里,用户还可以执行其他的任务,如关闭程序、打开文件等.