質問: taskkill-特定の文字列で終わるウィンドウタイトルでタスクを終了します すべてのmsofficeコミュニケータータスクをウィンドウタイトルで終了するバッチプログラムを作成する必要があります(通常はパターン「-会話」で終了します)。私は試した taskkill/fi "windowtitle eq *会話"/im communicator.exe ただし、「*」で始まるワイルドカードパターンは機能していないようです。次のエラーが発生します エラー:検索フィルターを認識できません。 回避策の提案をいただければ幸いです。
回答: これは、rogierによる この質問 に部分的に触発されたバッチファイルです。 _@echo off_ for /f "delims=" %%a in ('tasklist /fo list /v') do ( _ call :sub %%a_ _)_ _exit /b_ _:sub_ _set line=%*_ _set bol4=%line:~0,4%_ _set bol13=%line:~0,13%_ _set value=%line:~14%_ _if "%bol4%"=="pid:" (_ _ set save_pid=%value%_ _ exit /b_ _)_ _if "%bol13%"=="window title:" (_ //注。未満。 _ echo %value% | findstr /r /c:"- conversation.$" > nul_ _ if not errorlevel 1 (_ _ echo %save_pid%_ _ rem taskkill /pid %save_pid%_ _ )_ _ exit /b_ _)_ _exit /b_ の正規表現の最後に_._を追加する必要があることがわかりました。 echostring_| findstr /r_$で終わる正規表現 動作するフォーム。 echoがcrまたはおそらく余分なcrlfをstringに追加していて、findstrがそれを文字として数えていると思います文字列と行末の間に発生します。明らかに、これをテストしたtaskkillコマンドのコメントを外します。