在 Win 10 Pro 中,我使用任务计划程序让我的 PC 在晚上进入睡眠状态(而不是休眠),效果很好。但我试图让我的 PC 在早上自动唤醒,但没有成功。我在 Windows 电源选项中启用了唤醒计时器,并在任务计划程序选项中选择了“唤醒此计算机”。
答案1
使用 Win 10 中的任务计划程序唤醒睡眠中的 PC
我试图让我的 PC 在早上自动唤醒,但没成功。我在 Windows 电源选项中启用了唤醒定时器,并在任务计划程序选项中选择了“唤醒此计算机”。
两个步骤
步骤1
创建批处理脚本(示例见下面的解决方案第二部分)那模拟键盘按键. 使用 Windows 安排任务计划程序并告诉它唤醒计算机来运行任务在指定的时间。
(再次,底部的示例批处理脚本用于调度以及 Windows 原生的逻辑,模拟键盘敲击(发送键),这将唤醒处于睡眠状态的监视器。
来源: 如何让您的 PC 自动从睡眠状态唤醒 - 更多详细信息
第2步
使用下面的批处理脚本逻辑,通过动态构建和执行的 VBS 脚本以批处理方式本地模拟键盘按键。这将是按逻辑执行的批处理脚本的示例。
示例批处理脚本多次发送空格,如按空格键
(您可以使用任何其他需要的键发送键也)
@ECHO OFF
SET TempVBSFile=%tmp%\~tmpSendKeysTemp.vbs
:VBSDynamicBuild
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys " " >>"%TempVBSFile%"
CSCRIPT //nologo "%TempVBSFile%"
GOTO EOF
计算机从睡眠状态唤醒时出现问题
如果你在使用 Windows 时遇到问题计划任务在计算机处于睡眠状态时唤醒计算机,那么您可能需要禁用休眠功能,以防这是导致计算机休眠的原因。为此,只需打开 Windows 命令提示符作为管理员,输入此命令POWERCFG HIBERNATE OFF
,按Enter,然后重新启动电脑。另请参阅电源配置有关此命令的更多详细信息。
测试一下
如果可能,您可能需要进行测试以确认此操作是否能解决问题。按照以下说明设置作业,但将其设置为从您准备测试时起 2-5 分钟内启动。准备就绪后,从命令行运行此操作(再次以管理员身份运行)以使 Windows 10 计算机进入睡眠状态C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0
,然后等待查看是否有效。
还是行不通
请参阅我在这篇文章中接受的答案,相关内容计划任务问题。虽然这个答案适用于 Windows 7,但这些选项仍然适用于 Windows 10 上的任务计划程序,因此只需查看它并确保选项按照指示设置或适用和等效设置即可。
答案2
有效的解决方案!
我不得不使用 PsShutdown 实用程序来实现正确的睡眠(主要问题是 SetSuspendState 不允许唤醒计时器唤醒机器)。我的睡眠批处理文件只有一行:PsShutdown -d -t 2
我的整个设置是:计划任务在进入睡眠状态之前运行 VBS 来监视备份;当准备进入睡眠状态时,VBS 使用 psshutdown -d 运行 bat 文件
使用具有最高权限的任务计划程序运行 vbs 可防止使用 PsShutdown 时出现 UAC 提示。