假设我使用“shutdown -s -f -t 13600”来启动计划关机。
在 Windows XP 中,我总是会看到一个对话框,提醒我即将关机。
然而在 Windows 7 中,它会在系统托盘中显示一个弹出窗口,该窗口会在几秒钟后消失。
我如何查询或启用类似 Windows XP 的对话框以便知道何时关机?
答案1
我找到办法了。
如果不是使用shutdown -s -f -t 13600
你用shutdown -s -f -t 13600 -c "13600"
该-c
选项为记录的关机事件添加注释Windows 事件查看器
您的评论“13600”将显示在事件查看器中,如红色椭圆所示:
要亲自查看此视图:在开始菜单中键入事件查看器,然后转到 Windows 日志 -> 系统您将看到系统事件列表。
任何带有事件 ID的1074将会延迟关闭。
因此,我们想要的是一些代码来获取最后一个1074
事件,查找事件注释中的值并将该值(以秒为单位)添加到事件创建的时间,从而给出关闭时间。
我为 Windows PowerShell(Windows 7 附带)创建了一个函数来执行此操作:
function nextShutdownTime
{
$events = Get-WinEvent -FilterHashtable @{logname="system"; id=1074}
$event = $events[0]
$eventXML = [xml]$event.ToXml()
return $event.TimeCreated.addSeconds([int]$eventXML.Event.EventData.Data[5])
}
只需将其添加到您的 PowerShell 配置文件中,然后在 PowerShell 中运行命令nextShutdownTime
即可查看预计的关机时间。
答案2
要确定是否正在进行关机,最简单的方法就是安排另一次关机。为确保万无一失,请至少设置 200 秒的超时时间。要么您会收到一条错误消息,指出已在进行关机,要么它会启动定时关机,您可以通过键入 shutdown /a 来中止该关机。
因此你输入
shutdown /r /t 600
现在你要么得到
C:\Users\Administrator>shutdown /r /t 600
A system shutdown has already been scheduled.(1190)
或者将安排新的关机。
如果您只想确保没有安排关机,您可以简单地尝试中止。要么会中止,要么会声明没有安排关机。
C:\Users\Leon>shutdown /a
Cannot abort a system shutdown. There is no shutdown in progress (1116)
答案3
我花了大约一个小时尝试让它完全按照你的要求工作。我试验了,搜索了又搜索,但还是无法做到完美,不过我还是想出了一个办法。
我尝试了所有关机组合(-i -c -d 选项),但没有效果。
我也尝试了 -i 选项后的 GUI 界面。
我也尝试过改变气球时间显示,以便它能够在系统托盘中停留更长时间,但它仍然消失了。
我最接近使用这个示例命令的是:shutdown -i -r -t 300
我认为事实是他们只是改变了它的工作方式,我不认为有任何方法可以完全解决这个问题,但现在-i
会弹出一个对话框,而以前它会弹出你想要的屏幕。当我-i
在 Windows 7 中使用时,我必须填写该框,结果如下:
然后我点击Enter并得到了这个:
我测试了一下,似乎“显示警告 X 秒”中可以输入的上限值只有 600,尽管实际上您最多可以输入 999(非常奇怪的编程)。
答案4
我如何查询或启用类似 Windows XP 的对话框以便知道何时关机?
Windows 7 中的原生关机程序不像以前版本的 Windows 那样提供倒计时对话框(或取消按钮)。
如果您需要安排关机并提供倒计时和取消按钮,您可以使用 HTA 应用程序,它可以包含文本、图像、倒计时和取消按钮。
以下是一个例子: HTA 脚本 - 关闭脚本和警告消息
来源是我的个人博客。