windows - procedimientos - Buscar nombre de proceso por su ID de proceso
proceso y procedimiento civil (3)
El básico, pedir a la lista de tareas que filtre su salida y solo muestre la información de identificación del proceso indicada
tasklist /fi "pid eq 4444"
Para obtener solo el nombre del proceso, la línea debe dividirse
for /f "delims=," %%a in (''
tasklist /fi "pid eq 4444" /nh /fo:csv
'') do echo %%~a
En este caso, la lista de procesos se recupera sin encabezados (
/nh
) en formato csv (
/fo:csv
).
Las comas se usan como delimitadores de tokens y el primer token en la línea es el nombre de la imagen
nota : en algunas versiones de Windows (una de ellas, mi caso, es la versión española de Windows XP), el filtro pid en la lista de tareas no funciona. En este caso, el filtro sobre la lista de procesos debe hacerse fuera del comando
for /f "delims=," %%a in (''
tasklist /fo:csv /nh ^| findstr /b /r /c:"[^,]*,/"4444/","
'') do echo %%~a
Esto generará la lista de tareas y la filtrará buscando la identificación del proceso en la segunda columna de la salida de csv.
editado : alternativamente, puede suponer lo que ha hecho el equipo que tradujo el sistema operativo al español. No sé lo que puede pasar en otros lugares.
tasklist /fi "idp eq 4444"
Supongamos que conozco la ID del proceso. Quiero encontrar el nombre del proceso por su ID, usando el script por lotes de Windows. ¿Cómo puedo hacer esto?
Usando solo las utilidades "nativas" de Windows, intente lo siguiente, donde "516" es el ID de proceso para el que desea el nombre de la imagen:
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 )
O podría usar wmic (la herramienta de línea de comandos de Instrumental de administración de Windows) y obtener la ruta completa al ejecutable:
wmic process where processId=516 get name
wmic process where processId=516 get ExecutablePath
O bien, puede descargar Microsoft PsTools , o específicamente descargar solo la utilidad pslist, y usar 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
... establezca PID para adaptarse a su circunstancia.