システムのスケジュールされたタスクを選択的に削除する

システムのスケジュールされたタスクを選択的に削除する

Windows 7 ボックスには、スケジュールされたタスクの一覧があります - > 既定の Windows タスク + 特定の文字列で始まる特定のカスタム タスク。以前のコードでは、次のコマンドですべてのタスクを削除しました。

schtasks /Delete /TN * /F

代わりに、デフォルトの Windows タスクを保持し、特定の文字列 (など) で始まるタスクを選択的に削除しますabctask1abctask2さらに進めるにはどうすればよいでしょうか? ありがとうございます!

答え1

タスクが 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

関連情報