5

特定の基準に一致するWindowsプロセスを取得しようとしています。たとえば、「123456.exe」のようなもので、タスクリストで強制終了しようとしています。私はそのようにしようとしています:

FOR /F "usebackq tokens=2 skip=2" %i IN (`tasklist |findstr /r "[0-9].exe") DO taskkill /PID %i

これは正しくなく、理由がわかりません.... 誰かヒントを教えてもらえますか? 事前にサンクス!

4

3 に答える 3

14
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "[0-9][0-9]*[.]exe"`) DO taskkill /pid %i

いくつかの変更:

  • command_to_process には、コマンドの両側に逆引用符 (``) が必要です。
  • command_to_process 内のパイプ (「|」) は、キャレット (「^」) でエスケープする必要があります。
  • findstr コマンドは、「.exe」の前に数字があるすべてのプロセスに一致します。たとえば、「myapp4.exe」も強制終了されます。私が提供するバージョンは、数字のみを含むプロセス名と一致します。
  • 「skip=2」オプションは、タスクリストではなく、findstr から出力される最初の 2 行をスキップします。正規表現は tasklist から出力された最初の 2 行に一致しないため、skip オプションを安全に削除できます。

ところで、このコマンドをバッチ スクリプトに配置する場合は、パラメーターに "%i" の代わりに "%%i" を使用することを忘れないでください。そうしないと、次のようなエラー メッセージが表示されます。i was unexpected at this time.

于 2012-03-15T18:35:36.583 に答える