Vind de procesnaam op zijn proces-ID

Stel dat ik de proces-ID ken. Ik wil de procesnaam vinden op basis van zijn ID, met behulp van het Windows-batchscript. Hoe kan ik dit doen?


Antwoord 1, autoriteit 100%

De basis, vraag de takenlijst om de uitvoer te filteren en laat alleen de aangegeven proces-ID-informatie zien

tasklist /fi "pid eq 4444" 

Om alleen de procesnaam te krijgen, moet de regel worden gesplitst

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

In dit geval wordt de lijst met processen opgehaald zonder headers (/nh) in csv-formaat (/fo:csv). De komma’s worden gebruikt als scheidingstekens voor tokens en het eerste token in de regel is de naam van de afbeelding

opmerking: In sommige Windows-versies (een daarvan, in mijn geval, is de Spaanse Windows XP-versie), werkt het pid-filter in de takenlijst niet. In dit geval moet het filter over de lijst met processen worden gedaan met de opdracht

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

Hiermee wordt de takenlijst gegenereerd en gefilterd op zoek naar de proces-ID in de tweede kolom van de csv-uitvoer.

bewerkt: je kunt ook veronderstellen wat er is gemaakt door het team dat het besturingssysteem naar het Spaans heeft vertaald. Ik weet niet wat er in andere landen kan gebeuren.

tasklist /fi "idp eq 4444" 

Antwoord 2, autoriteit 6%

Gebruik alleen “native” Windows-hulpprogramma’s en probeer het volgende, waarbij “516” de proces-ID is waarvoor u de afbeeldingsnaam wilt hebben:

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 )

Of je kunt wmic (de Windows Management Instrumentation Command-line tool) gebruiken en het volledige pad naar het uitvoerbare bestand krijgen:

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

Of u kunt Microsoft PsToolsdownloaden, of specifiek alleen de pslist-hulpprogramma en gebruik PsList:

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

Antwoord 3, autoriteit 2%

@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

…stel PID in op uw situatie.

Other episodes