通过进程 ID 查找进程名称 [关闭]

Posted

技术标签:

【中文标题】通过进程 ID 查找进程名称 [关闭]【英文标题】:Find Process Name by its Process ID [closed] 【发布时间】:2015-01-28 10:58:06 【问题描述】:

假设我知道进程 ID。我想使用 Windows 批处理脚本通过其 ID 查找进程名称。我该怎么做?

【问题讨论】:

【参考方案1】:

基本的,让tasklist过滤它的输出,只显示指定的进程id信息

tasklist /fi "pid eq 4444" 

只获取进程名,必须拆分行

for /f "delims=," %%a in ('
    tasklist /fi "pid eq 4444" /nh /fo:csv
') do echo %%~a

在这种情况下,以 csv 格式 (/fo:csv) 检索不带标题 (/nh) 的进程列表。逗号用作标记分隔符,行中的第一个标记是图像名称

注意:在某些 windows 版本中(其中一个,我的例子是西班牙 windows xp 版本),任务列表中的 pid 过滤器不起作用。在这种情况下,必须在命令之外完成对进程列表的过滤

for /f "delims=," %%a in ('
    tasklist /fo:csv /nh ^| findstr /b /r /c:"[^,]*,\"4444\","
') do echo %%~a

这将生成任务列表并过滤它,在 csv 输出的第二列中搜索进程 ID。

已编辑:或者,您可以假设将操作系统翻译成西班牙语的团队做了什么。我不知道在其他地区会发生什么。

tasklist /fi "idp eq 4444" 

【讨论】:

有没有办法单独获取所有进程和 PID?我们可以在 linux 中做到这一点,但不确定 dos 命令。请帮忙。 对我来说显示“任务列表:找不到命令”我该怎么办?【参考方案2】:

仅使用“本机”Windows 实用程序,尝试以下操作,其中“516”是您想要图像名称的进程 ID:

for /f "delims=," %a in ( 'tasklist /fi "PID eq 516" /nh /fo:csv' ) do ( echo %~a )
for /f %a in ( 'tasklist /fi "PID eq 516" ^| findstr "516"' ) do ( echo %a )

或者您可以使用 wmic(Windows Management Instrumentation 命令行工具)并获取可执行文件的完整路径:

wmic process where processId=516 get name
wmic process where processId=516 get ExecutablePath

或者您可以下载 Microsoft PsTools,或者专门下载 pslist 实用程序,然后使用 PsList:

for /f %a in ( 'pslist 516 ^| findstr "516"' ) do ( echo %a )

【讨论】:

如果进程ID小于1000,find命令可以在tasklist的情况下检索到内存列中匹配数据的错误行,或者(小于或大于1000)在wmicpslist 数字列中的任何数字列中。 添加尾部空格并不能解决问题(例如:内存列中的1.500)。在 tasklist 中您可以过滤输出(/fi),在 wmic 中您可以过滤输出(where 子句),在 pslist 中您可以过滤输出(在命令行中给出 pid)。虽然grep 是一个很棒的工具,但这里没有必要使用它 好的,好的。让我为它工作...... ;-)【参考方案3】:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a pid=1600
FOR /f "skip=3delims=" %%a IN ('tasklist') DO (
 SET "found=%%a"
 SET /a foundpid=!found:~26,8!
 IF %pid%==!foundpid! echo found %pid%=!found:~0,24%!
)

GOTO :EOF

...根据您的情况设置 PID。

【讨论】:

以上是关于通过进程 ID 查找进程名称 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

pgrep---以名称为依据从运行进程队列中查找进程

如何在 unix 中查找特定进程 ID 的端口号? [关闭]

pgrep命令

pidof---查找指定名称的进程的进程号id号。

dos命令记录以及dos下通过进程id查找工作路径

Linux 命令(177)—— pgrep 命令