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.