我正在使用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"这就引出了以下问题:
发布于 2016-12-14 09:22:21
tasklist无法过滤到多个PID。因此,使用完整的输出并使用另一种方法来筛选:
使用csv作为输出格式;PID为token2,窗口标题为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
)发布于 2016-12-14 09:28:11
powershell解决方案
[regex]$Pid='(75068|6712)'
Get-Process |where {$_.mainWindowTItle -and $_.ID -match $Pid} |select ID,MainWIndowtitle输出
Id MainWindowTitle
-- ---------------
75068 cmd - tasklist to filter by multiple PIDs - Stack Overflow - Mozilla Firefox
6712 VmUbuntu-1604lts [wird ausgeführt] - Oracle VM VirtualBoxhttps://stackoverflow.com/questions/41137783
复制相似问题