按多个 PID 过滤的任务列表
tasklist to filter by multiple PIDs
我正在使用 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
如果我单独运行,结果就OK了,我可以设置进程信息了。然而,
tasklist.exe /v /fi "PID eq 3248"
tasklist.exe /v /fi "PID eq 9488"
我不想激活两个单独的命令。
丑陋的选择 2
使用find
tasklist.exe /v | find /i "9488"
带来的问题:
- 如何找到多个 PID?
- 如何确保找到的字符串确实是 PID 而不是其他任何内容。
tasklist
无法过滤到多个 PID。所以使用全量输出,用另一种方法过滤:
使用csv
作为输出格式; PID是token2,windowtitle是token9.
findstr
可以搜索多个字符串(此处以空格分隔)。
/x
检查 "complete line",因此 45
不会匹配 3456
.
>nul
抑制 findstr
的输出(我们只需要错误级别,而不是实际输出)
&&
充当 "if previous command (findstr) was successful, then..."
@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
)
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 VirtualBox
我正在使用 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
如果我单独运行,结果就OK了,我可以设置进程信息了。然而,
tasklist.exe /v /fi "PID eq 3248"
tasklist.exe /v /fi "PID eq 9488"
我不想激活两个单独的命令。
丑陋的选择 2
使用find
tasklist.exe /v | find /i "9488"
带来的问题:
- 如何找到多个 PID?
- 如何确保找到的字符串确实是 PID 而不是其他任何内容。
tasklist
无法过滤到多个 PID。所以使用全量输出,用另一种方法过滤:
使用csv
作为输出格式; PID是token2,windowtitle是token9.
findstr
可以搜索多个字符串(此处以空格分隔)。
/x
检查 "complete line",因此 45
不会匹配 3456
.
>nul
抑制 findstr
的输出(我们只需要错误级别,而不是实际输出)
&&
充当 "if previous command (findstr) was successful, then..."
@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
)
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 VirtualBox