按进程ID查找进程名称

Oz *_*aim 58 windows command-line operating-system cmd batch-file

假设我知道进程ID.我想使用Windows批处理脚本通过其ID找到进程名称.我怎样才能做到这一点?

MC *_* ND 78

基本的,请求任务列表过滤其输出并仅显示指示的进程ID信息

tasklist /fi "pid eq 4444" 
Run Code Online (Sandbox Code Playgroud)

要仅获取进程名称,必须拆分该行

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

在这种情况下,将/nh在csv format(/fo:csv)中检索没有headers()的进程列表.逗号用作标记分隔符,行中的第一个标记是图像名称

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

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

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

编辑:或者,您可以假设团队将操作系统翻译成西班牙语.我不知道其他语言环境会发生什么.

tasklist /fi "idp eq 4444" 
Run Code Online (Sandbox Code Playgroud)


Cra*_*aig 5

仅使用“本机” 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 )
Run Code Online (Sandbox Code Playgroud)

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

wmic process where processId=516 get name
wmic process where processId=516 get ExecutablePath
Run Code Online (Sandbox Code Playgroud)

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

for /f %a in ( 'pslist 516 ^| findstr "516"' ) do ( echo %a )
Run Code Online (Sandbox Code Playgroud)