一般情况下,在Windows系统下我们会打开cmd或者是使用powershell(脚本命令:shutdown -s -t 从现在到预定关机时间的秒数)来实现自动关机。
但更多时候,我们希望免干预,系统自动按照自己预置的时间关机,如每天固定下午6点下班,系统自动关机,无需人为干预。
要实现以上目的,我们需要两个步骤:1)编写关机的脚本,本质还是执行shutdown命令,只不过这里执行关机脚本的时候由系统自动计算当前到预定关机时间的秒数;2)将关机脚本加入到任务计划程序中,设置为开机时自动执行关机脚本。
做完以上两个步骤,就可以实现免干预自动关机了。这里之所以选择使用vbs脚本而不是其他语言脚本,是因为windows平台自带vbs运行环境,不需要预装其他的软件工具。
操作步骤如下:
在Windows平台下新建文件,后缀名为vbs(例:shutdown.vbs),拷贝以下脚本后保存。
' 脚本作用:实现自动关机
Option Explicit
On Error Resume Next
' 获取当前到指定关机时间之间的秒数
Function GetSeconds(EndTime)
GetSeconds=DateDiff("s",Time,EndTime)
End Function
' 创建一个对象用于调用Windows的关机API
Dim ObjShell,Seconds
Dim EndTime
' 设置关机时间为晚上6:00
EndTime=#18:00:00#
' 手动指定关机时间,输入格式:18:00:00
' EndTime=CDate(InputBox("请输入关机时间:"))
Set ObjShell = WScript.CreateObject("WScript.Shell")
Seconds=GetSeconds(EndTime)
' 调用shutdown命令,并设置自动关机
ObjShell.Run "shutdown -s -t " & Seconds, 0, True
' 清理对象
Set ObjShell = Nothing
If Err Then
' 如果有错误,输出错误信息
WScript.Echo "发生错误: " & Err.Description
WScript.Echo "错误号: " & Err.Number
Err.Clear ' 清除错误信息,以防止影响后续代码
' Else
' MsgBox("自动关机命令执行成功")
End If
打开“开始”菜单,搜索并打开任务计划程序,然后点击“新建任务”:
参考以下截图设置:
常规设置:
触发器设置:
操作设置: