ウィンドウタイトルに特定のテキストを含むプロセスを強制終了する簡単なバッチファイルを作成したいと思います。今私は持っています:
taskkill /fi "Windowtitle eq XXXX*" /im cmd.exe
そして、それは機能しますが、私がやりたいのは、タイトルの最初と最後の両方でワイルドカードを使用することです。だから次のようなもの:
taskkill /fi "Windowtitle eq \*X*" /im cmd.exe
しかし、私はこれを試しましたが、機能しません。私が見逃しているものはありますか、それともこれは不可能ですか?
いいえ、フィルターの開始時にワイルドカードを使用することはできません。
for /f "tokens=2 delims=," %%a in ('
tasklist /fi "imagename eq cmd.exe" /v /fo:csv /nh
^| findstr /r /c:".*X[^,]*$"
') do taskkill /pid %%a
これにより、タスクのリストがcsv形式および詳細形式で取得されます(出力の最後のフィールドとしてウィンドウタイトルが含まれます)。
リストは、最後のフィールドで指定されたテキスト(findstr
)を検索する正規表現を使用してX
でフィルタリングされます。
いずれかの行がフィルターに一致する場合、for
はそれをトークン化し、プロセスを終了するためにtaskkillで使用される2番目のフィールド(PID)を取得します。
バッチファイルからコマンドウィンドウを自分で開始した特別な場合は、コマンドを使用してウィンドウタイトルを指定できます。
START MyWindowTitle c:/MyProcess.exe
そうすれば、プロセスを再度強制終了するのは簡単です。
taskkill /fi "WindowTitle eq MyWindowTitle"