How can I make Windows 8 scheduler to run something once when the computer is idle but then wait for at least 12 hours in order to do the same?

Solution 1:

You're setting your task up backwards. Instead of triggering on system idle, trigger it at a specific time, set to repeat every 12 hours. Then, go to the Conditions tab and tell it to only start after the system has been idle for (insert desired duration here). Depending on the nature of the task, you may also want to select the option to stop the task if the computer ceases idling (and then, may want to select to restart if idle resumes). You probably also want to go to the Settings tab and choose the option to run the task ASAP after a missed start time.

Screenshots below are of a proper configuration for your task in a Windows 7 system.

Edit Trigger screen: Note it is set to "One Time" with "Repeat every 12 hours for a duration of Indefinitely". The default time in this dialog is the time at which you open the dialog. This will be fine, since you're going to set a Condition to keep it from starting unless the system is idle.

enter image description here

Conditions screen: I've selected for the task to only start if the computer has had one minute of idle time. If the idle timer is not met when the task is first triggered, the task will wait 1 hour (the "Wait for idle for" setting) before aborting the attempt. Note that this means the task will not start if the computer is not idle for at least one minute within an hour of the scheduled trigger. This also means that the task could potentially have two runs within 11 hours of each other - if the idle condition for the first run is not met until the very end of its run window, and the idle condition for the second run is met at the very beginning of its window.

I've also selected for the task to stop if the computer exits its idle state, and restart when the computer goes back to idle - your preferences here (and in other options on this screen) may differ.

enter image description here

Settings screen: You probably want the task to trigger ASAP if a scheduled start time is missed (e.g.: The computer is off). Retry attempts may be useful, depending on the nature of the task. Also, it may be good to have a timer to stop the task if it is running too long. The last setting will, by default, keep the task from starting if a previous instance is still running.

enter image description here