10

Окно Windows 7 содержит список запланированных задач -> Задачи Windows по умолчанию + Некоторые пользовательские задачи, которые начинаются с определенной строки. Предыдущий код удалил все задачи с помощью команды:

schtasks /Delete /TN * /F

Вместо этого мы хотим сохранить задачи Windows по умолчанию и выборочно удалять задачи, начинающиеся с определенной строки, например, abctask1 , abctask2 . Как продолжить дальше? Спасибо!

5 ответов5

5

Предполагая, что ваши задачи состоят из одного слова (например, abctask1, abctask2 - не "abc task 1"), это должно работать:

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

Я попал сюда в поисках способа автоматизации отключения некоторых запланированных задач Windows. Я не мог получить ни один из текущих примеров, чтобы правильно обрабатывать имена задач с обратной косой чертой и пробелами. Я обнаружил, что использование формата CSV и команда поиска работают лучше всего для меня:

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

Если вы хотите использовать подстановочный знак (*) при выборе задач для удаления, попробуйте использовать эту простую пакетную команду:

(только образец)

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

Вы, ребята, очень помогли здесь. Хотя вышеприведенное работает для более коротких имен, а user3490 опубликовал довольно хорошее дополнение к строке, похоже, что оно не работает с именами с пробелами. Я обнаружил, что использование групповых символов с SCHTASKS работает с '.' вместо '*' и нашел интересную модификацию строки, позволяющую столь необходимую возможность! Ниже я приведу примеры того, что я использовал в командном файле:

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "AVGPCTuneUp_Task."') do SCHTASKS /DELETE /F /TN "\%%x"

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "AMD.Updater."') do SCHTASKS /DELETE /F /TN "\%%x"

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "Lenovo.Smile."') do SCHTASKS /DELETE /F /TN "\%%x"

Спасибо всем здесь за отличные ссылки! Я знаю, что этой теме уже более года, но я надеюсь, что это поможет кому-то еще, кто, возможно, не зашел так далеко.

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .