任务计划程序 - 任务空闲条件

任务计划程序 - 任务空闲条件

再次使用任务计划程序。

Microsoft - 任务空闲条件

在 Windows 7 下,任务按照链接中所述的规则运行...经过测试并且有效。

在 Windows 10(Pro v1809 包含所有更新)下...嗯,不完全是。

首先,这两个任务(在 Windows 7 和 Windows 10 下)是相同的。任务创建如下:

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

如果我在 14:15 复制一些文件,并在 14:15 移动鼠标,并在 14:15 在键盘上打字,然后在 14:15 离开电脑,我希望任务在 15:15 执行而不是在 14:30 执行,还是我错了?

该任务总是在 14:30 执行(如果我在 14:25 将计算机开到最大),或者如果我在 14:30 在计算机上工作,则该任务根本不执行(就当天而言)。WTF?如果我在装有 Windows 7 的计算机上重新创建该任务,一切都会正常。

这是在 2 台不同的 Windows 7 电脑和 3 台不同的 Windows 10 电脑上测试的。这里的数字并不重要,因为同样的事情发生在 02:00,空闲时间为 15 分钟,等待时间为 2 小时。它们在这里只是为了描绘正在发生的事情。

我甚至认为这与 Windows 10 中的“工作时间”有某种联系,工作时间设置在 06:00 到 00:00 之间,所以我将任务移到了 14:30......是的,这没有帮助。

是的,我确实知道 Windows 10 对空闲时间的看法与 Windows 7 不同,但这意味着任务将在稍后执行,而不是更早执行,尤其是不会在设置触发器时执行。

如果有人可以证实这种行为并提供一些解释为什么会发生这种情况,我会很感兴趣。


2019 年 5 月 13 日。- 现在我可以肯定地证实这一点。今天我的两个朋友证实了这个问题。这一定是 Windows 10 v1809 中的一个错误(也许早期版本也有,但我无法访问它们)。我还可以确认这在 Windows 7 机器上没有问题。太好了,太棒了。我会在 Microsoft 论坛上发布这个问题。

在此处输入图片描述


2019 年 5 月 15 日。- 设法在 Windows 10 v1607 上测试了这一点... 同样的事情发生了。怎么可能没有人(两年多来)向微软报告过这个问题?这不可能是它应该有的行为方式,这显然是 Windows 10 中的一个错误。

答案1

您是否尝试过使用空闲状态改为触发器?据我所知,任务空闲条件仅用于此触发器。

空闲时触发

我创建了一个测试任务 - 如下所示。每次计算机空闲时,它将在 1 分钟后执行。为了测试它,我只是使用Win + L快捷方式锁定了 Windows 屏幕。计算机锁定后 1 分钟内,任务就执行了。


测试Task.xml:

您可以将此任务导入任务计划程序并测试。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2019-05-12T18:21:43.6698729</Date>
    <Author>nsm</Author>
    <URI>\Test Task</URI>
  </RegistrationInfo>
  <Triggers>
    <IdleTrigger>
      <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
      <Enabled>true</Enabled>
    </IdleTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT1M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>true</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Projects\StackOverflow\cmd\testidletask.cmd</Command>
    </Exec>
  </Actions>
</Task>

测试空闲任务.cmd:

@echo off
for /f "tokens=*" %%i in ('date /T') do set DATE=%%i
for /f "tokens=*" %%a in ('time /T') do set TIME=%%a
echo %DATE% %TIME% >>C:\Projects\StackOverflow\cmd\testidletask.log

相关内容