选择性删除系统计划任务

选择性删除系统计划任务

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

相关内容