按多个 PID 过滤的任务列表

ida*_*hmu 7 cmd tasklist filter find

我正在使用tasklist命令。

我正在尝试使用该/fi选项来过滤多个 PID。

试图

tasklist.exe /v /fi "PID eq 3248" /fi "PID eq 9488"

结果

INFO: No tasks are running which match the specified criteria.

不起作用。我只能假设过滤器是使用逻辑与在内部评估的,显然永远不会为真。

如何按多个PID过滤?

丑陋的替代品1

如果我单独运行它,结果是可以的,我可以设置进程信息。然而,

  • tasklist.exe /v /fi "PID eq 3248"
  • tasklist.exe /v /fi "PID eq 9488"

我想避免激活两个单独的命令。

丑陋的选择2

find

tasklist.exe /v  | find /i "9488"
Run Code Online (Sandbox Code Playgroud)

这带来了以下问题:

  1. 如何找到多个PID?
  2. 如何确保找到的字符串确实是 PID 而不是其他任何东西。

Ste*_*han 4

tasklist无法过滤多个 PID。因此使用完整输出并使用另一种方法进行过滤:

用作csv输出格式;PID是token2,windowtitle是token9。
findstr能够搜索多个字符串(此处用空格分隔)。
/x检查“完整行”,因此45不会匹配3456
>nul抑制输出findstr(我们只需要错误级别,而不是实际输出)
&&充当“如果上一个命令(findstr)成功,则...”

@echo off
for /f "tokens=2,9 delims=," %%a in ('tasklist /v /fo csv') do (
  echo %%~a|findstr /x "3248 9488" >nul && echo %%~a    %%~b
)
Run Code Online (Sandbox Code Playgroud)