프로세스 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
'program tip' 카테고리의 다른 글
양식에 동적으로 필드 추가 (0) | 2021.01.08 |
---|---|
C에서 0에 대한 포인터 역 참조 (0) | 2021.01.08 |
IOHIDFamily의 미스터리 콘솔 오류 (0) | 2021.01.08 |
sourcetree를 사용하여 git rebase (0) | 2021.01.08 |
개발 포드 변경 사항을 다시 빌드하는 방법은 무엇입니까? (0) | 2021.01.08 |