Windows 7 框中有一个计划任务列表 -> 默认 Windows 任务 + 某些自定义任务,这些任务均以某个字符串开头。 上面的代码使用以下命令删除了所有任务:
schtasks /Delete /TN * /F
相反,我们希望保留默认的 Windows 任务,并有选择地删除以某个字符串(例如 )开头的任务abctask1
。abctask2
如何继续?谢谢!
答案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