使用 Windows 任务计划程序
我有一个想要在每天下午 5:30 运行的任务,但我不确定在执行任务时我是否会在那台电脑上。
因此,我想允许 Windows 唤醒我的电脑来运行任务。问题是,如果我不使用电脑,我不想唤醒它。
我的问题是:我可以让 Windows 在计算机完成任务后进入睡眠状态吗仅有的如果它被任务唤醒,但如果计算机已经唤醒,是否允许它保持唤醒状态?
我确信我可以使用powercfg -lastwake
,但我不确定如何读取输出来检查
我也使用批处理文件来执行此任务,如果相关的话
答案1
更新
我已经找到了一种在唤醒时间极短的情况下完成此操作的方法。由于我知道脚本的执行时间在一个很窄的范围内(对于运行时间最长的脚本,大概在 20-30 秒),所以我创建了一个批处理文件,其中包含一个 PowerShell 脚本,用于使我的计算机进入睡眠状态,同时允许其他唤醒计时器。我已将此批处理文件放在任务计划程序上,将它们安排在我的任务正常完成后大约 6-7 分钟,并使任务要求我的计算机空闲 5 分钟。虽然我可能会在使用此脚本时遇到一些小问题,但大多数情况下我应该都很好,而且 5 分钟的时间足以确保我的计算机不会意外进入睡眠状态。
这是批处理文件代码(在网上某处找到的):
powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)
我已经删除了计划任务的一些 XML 文件位,但这里有一些可用于执行类似操作的 XML 代码:
-<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
-<IdleSettings>
<Duration>PT5M</Duration>
<WaitTimeout>PT0S</WaitTimeout>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>true</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>