Выборочное удаление запланированных системных задач

Выборочное удаление запланированных системных задач

В 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

Ответ Марка работает нормально, если у вас достаточно короткие названия запланированных задач, но вывод по умолчанию 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

Связанный контент