如何防止排程任務在電腦喚醒後立即執行?

如何防止排程任務在電腦喚醒後立即執行?

範例:我有一項任務安排在每天早上 6 點執行(僅當我登入時)。如果我的電腦整夜睡眠/休眠直到上午 9 點,那麼任務醒來後就會運行,即使它錯過了上午 6 點的計劃。我不希望發生這種情況,因為任務運行很重要僅有的早上6點。

我認為取消選取「錯過計劃啟動後儘快運行任務」設定可以防止這種情況發生,但事實並非如此。我是否應該嘗試其他設置,以便僅當計算機在計劃時間打開時任務才會運行(如果錯過了,將等到下一個計劃時間)?

我的設定範例:

在此輸入影像描述

答案1

我找到了一個解決方法:讓您的任務啟動.bat腳本,如果發現電腦沒有睡眠,它將啟動命令。我使用的腳本是:

@echo off
for /f "delims=" %%t in ('time /t') do if "%%t"=="%1" %~2

這個腳本採用兩個參數:第一個是要呼叫命令的時間,第二個是命令本身,用引號引起來,例如script.bat 21:40 "echo x"

解釋

與 Bash 不同,在 Batch 中不可能將命令輸出直接儲存在變數中,但可以逐行迭代其輸出。這就是我的第二行的作用。因為time /t的輸出
是單行,所以只有一次迭代,其中如果腳本在您希望調用時被調用,則腳本將啟動命令(作為第二個參數傳遞);當腳本延遲執行時,將不會滿足此條件。

我使用%~2而不是%2,因為%~2丟棄命令周圍的引號,
以便傳遞"echo x"echo使用參數執行x,列印x
而不是調用echo x沒有參數的程式。

缺點

  1. 按需啟動任務不會執行任何操作,您最好取消選取該字段允許任務按需運行在裡面設定選項卡,不要對此感到困惑,

  2. 修改任務的執行時間需要修改參數以保持任務正常運行,

  3. time /t的輸出取決於區域設定。

答案2

要在計算機空閒時運行計劃任務,請引發“等待空閒:“也許還有復選標記”如果計算機不再空閒則停止」。

  1. 右鍵單擊要在電腦空閒時執行的任務,然後按一下「屬性」。
  2. 在「條件」標籤上的「空閒時間」下,勾選「僅在電腦空閒時間至少達到時才啟動任務」複選框。
  3. 輸入任務運行之前計算機必須空閒的時間長度(以分鐘為單位)。

注意:您也可以透過勾選「如果電腦不再空閒則停止任務」複選框來指定在電腦正在使用時應停止任何任務。

要了解空閒時間,請遵循以下步驟關聯...

答案3

由於您讓電腦處於睡眠/休眠狀態,因此從技術上講,您仍然「登入」(剛離開)。因此,作為替代方案,您可以在“條件”中將任務設定為“喚醒電腦以運行此任務”,並且它將始終在早上 6 點運行。 (除非您的意思是任務運行時您需要位於控制台)

相關內容