2014-11-30 3 views

ответ

39

Основных один, попросите Tasklist фильтровать свой вывод и показывать только информацию Показанного идентификатора процесса

tasklist /fi "pid eq 4444" 

Чтобы получить только имя процесса, линии должны разделяться

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

В этом case, список процессов извлекается без заголовков (/nh) в формате csv (/fo:csv). Запятые используются в качестве маркеров разделителей и первые маркера в строке являются именем изображения

примечание: В некоторых версиях Windows (в одном из них, моего случая, это испанский Windows XP версии), ИДП фильтр список задач не работает. В этом случае фильтр по списку процессов должны быть сделано из команды

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

это будет генерировать список задач и фильтровать поиск по идентификатору процесса во втором столбце вывода CSV.

отредактировал: в качестве альтернативы вы можете предположить, что было сделано командой, которая перевела ОС на испанский. Я не знаю, что может случиться в других местах.

tasklist /fi "idp eq 4444" 
3

Используя только «родные» утилиты для Windows, выполните следующие действия, где «516» идентификатор процесса, который вы хотите имя изображения для:

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 Command -линии инструмент) и получить полный путь к исполняемому файлу:

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

или вы можете скачать Microsoft PsTools или специально загрузить только утилиту PsList и использовать PsList:

+0

Если идентификатор процесса меньше, чем 1000, 'find' команда может получить неправильные строки, соответствующие данные в колонке памяти в случае' tasklist', или (меньше или больше, чем 1000) в любом числовых столбцов в числовых столбцах 'wmic' или' pslist'. –

+0

Добавление хвостового пространства не решает проблему (например: '1.500' в столбце памяти). В списке задач вы можете отфильтровать вывод ('/ fi'), в wmic вы можете отфильтровать вывод (' where' clause), в pslist вы можете отфильтровать вывод (введите 'pid' в командной строке). Хотя 'grep' - отличный инструмент, нет необходимости использовать его здесь –

+1

Хорошо, хороший звонок. Заставляю меня работать на это ... ;-) – Craig

1
@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 в соответствии с вашими обстоятельствами.

Смежные вопросы