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

too*_*fat 5 scheduled-task task-scheduler windows-10

再次使用任务计划程序。

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 在我的计算机上工作,它根本不执行(当天)。跆拳道?如果我在装有 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 上测试了这个……同样的事情发生了。怎么可能没有人(两年多来)向 Microsoft 报告此问题?这不可能是它的行为方式,这是 Windows 10 中的一个明显错误。

Ser*_*nov 1

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

空闲时触发

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


测试任务.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>
Run Code Online (Sandbox Code Playgroud)

testidletask.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
Run Code Online (Sandbox Code Playgroud)