Снова я с Планировщиком заданий.
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, но это будет означать, что задача будет выполнена позже, а не раньше, и особенно не в то время, когда был установлен триггер.
Было бы интересно, если бы кто-нибудь мог подтвердить такое поведение и, возможно, дать какое-то объяснение, почему это происходит.
13.05.2019. - Теперь я точно могу это подтвердить. Сегодня двое моих друзей подтвердили эту проблему. Это должно быть ошибкой в Windows 10 v1809 (возможно, и для более ранних версий, но у меня нет к ним доступа). Также я могу подтвердить, что это работает без проблем на машинах с Windows 7. Отлично, просто отлично. Отправлю этот вопрос на форумы Microsoft.
15.05.2019. - Удалось проверить это на Windows 10 v1607 ... происходит то же самое. Как это возможно, что никто еще (более двух лет) не сообщил об этой проблеме в Microsoft? Это не может быть так, как оно должно было вести себя, это явная ошибка в Windows 10.
Вы пробовали использовать На холостом ходу Вместо триггера? Насколько мне известно, условия простоя задачи использовались только для этого триггера.
Я создал тестовое задание - оно ниже. Он будет выполняться через 1 минуту каждый раз, когда компьютер бездействует. Чтобы проверить это, я просто блокировал экран Windows, используя Win + L
ярлык. Задача была выполнена ровно через 1 минуту после блокировки компьютера.
Вы можете импортировать эту задачу в планировщик задач и протестировать.
<?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>
@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