program tip

프로세스 ID로 프로세스 이름 찾기

radiobox 2021. 1. 8. 08:04
반응형

프로세스 ID로 프로세스 이름 찾기


프로세스 ID를 알고 있다고 가정합니다. Windows 배치 스크립트를 사용하여 ID로 프로세스 이름을 찾고 싶습니다. 어떻게 할 수 있습니까?


기본적인 것, 작업 목록에 출력을 필터링하고 표시된 프로세스 ID 정보 만 표시하도록 요청합니다.

tasklist /fi "pid eq 4444" 

프로세스 이름 만 얻으려면 라인을 분할해야합니다.

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

이 경우 프로세스 목록은 헤더 ( /nh) 없이 csv 형식 ( /fo:csv)으로 검색됩니다. 쉼표는 토큰 구분 기호로 사용되며 행의 첫 번째 토큰은 이미지 이름입니다.

참고 : 일부 Windows 버전 (내 경우에는 스페인어 Windows xp 버전)에서 작업 목록의 pid 필터가 작동하지 않습니다. 이 경우 명령에서 프로세스 목록에 대한 필터를 수행해야합니다.

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

그러면 작업 목록이 생성되고 csv 출력의 두 번째 열에서 프로세스 ID를 검색하여 필터링됩니다.

edited : 또는 OS를 스페인어로 번역 한 팀이 만든 것을 가정 할 수 있습니다. 다른 로케일에서 어떤 일이 발생할 수 있는지 모르겠습니다.

tasklist /fi "idp eq 4444" 

"기본"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 )

@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를 설정합니다.

참조 URL : https://stackoverflow.com/questions/27211427/find-process-name-by-its-process-id

반응형