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


10

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

schtasks /Delete /TN * /F

代わりに、デフォルトのWindowsタスクを保持し、特定の文字列say abctask1で始まるタスクを選択的に削除しabctask2ます。さらに進めるには?ありがとう!


のようなものを使ってみましたschtasks /Delete /TN abctask* /Fか?
ジョナビショップ

1
動作しません。*ワイルドカードは期待どおりに機能しないと思います。

ワイルドカードがそのように適切に機能しない場合、最善の策は、/queryオプションを使用してタスクのリストを取得し、ループして目的のパターンに一致するものを見つけ、フルネームを使用してそれらを削除することです。Perlスクリプトのようなものがこの種のタスクに最適かもしれません。
ジョナビショップ

回答:


5

タスクが1つの単語(たとえば、abctask1、abctask2-"abc task 1"ではない)であるとすると、これは機能するはずです。

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

1
findサイズが1/4未満の場合、findstr反応が速くなると思います。また、どちらも引用符を使用して検索語を囲む(findそれらを必要とする)ことをサポートしています。これにより、前述の「abcタスク1」のようなタスクを見つけることができます。
James K

マークに感謝します。まあ、実際には%% xを受け入れませんでした。%xに変更すると、うまくいきました!:)乾杯!:)

@ user1620230これをバッチファイルで実行していると思いました。%xの2パーセントはバッチファイルで必要ですが、%xはコマンドラインで必要です。@JamesKは、私はあなたが非常に難しいのいずれかの現実世界の速度差を見つけるために押されると思うfind対をfindstr、特にこの小さな何かで、。:-)

ああ、あなたを得ました:)ええ、はい、最終的にはバッチスクリプトで使用される可能性があります。情報をありがとう:)

schtasks / queryは、タスク名を50文字に切り捨てます。/ xmlオプションは切り捨てを回避します。for /f "tokens=2" %%x in ('schtasks /query /xml ^| findstr taskname') do
David

3

削除するタスクの選択でワイルドカード(*)を使用する場合は、次の簡単なバッチコマンドを使用してみてください。

(サンプルのみ)

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

2

いくつかのストック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

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年以上前のものであることを認識していますが、これがこれまでに到達していない他の誰かの助けになることを願っています。


1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.