選擇性地刪除系統計劃任務

選擇性地刪除系統計劃任務

Windows 7 方塊有一個排程任務清單 - > 預設 Windows 任務 + 某些自訂任務,全部以特定字串開頭。前面的程式碼使用以下命令刪除了所有任務:

schtasks /Delete /TN * /F

相反,我們希望保留預設的 Windows 任務,並選擇性地刪除以特定字串(例如 , )開頭的任務abctask1abctask2如何進一步進行?謝謝!

答案1

假設您的任務是一個單字(例如,abctask1、abctask2 - 而不是“abc task 1”),這應該有效:

for /f %%x in ('schtasks /query ^| findstr abctask') do schtasks /Delete /TN %%x /F

答案2

如果您希望在選擇要刪除的任務時使用通配符 (*),請嘗試使用以下簡單的批次命令:

(僅範例)

echo off
del %SystemDrive%\Windows\Tasks\Google*
del %SystemDrive%\Windows\Tasks\Facebook*

答案3

我在尋找一種自動停用某些 Windows 排程任務的方法時來到這裡。我無法獲得任何當前範例來正確處理帶有反斜線和空格的任務名稱。我發現使用 csv 格式和 find 指令最適合我:

for /f "tokens=1 delims=," %%x in ('schtasks /query /fo csv ^| find "\Microsoft\Windows\Application Experience\"') do schtasks /Delete /TN %%x /F

答案4

只要您的計劃任務名稱相當短,Mark 的答案就可以正常工作,但是schtasks /query(表格式)的預設輸出會將任務名稱截斷為 32 個字符,這會在嘗試刪除它們時導致錯誤。

如果您需要處理名稱較長的任務,我建議使用清單輸出格式,它不會截斷:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr abctask') do schtasks /Delete /TN %%x /F

如果要刪除的任務具有共同的前綴,則可以從 findstr 進一步細化配對:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr ^^abctask') do schtasks /Delete /TN %%x /F

相關內容