В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.
Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.
Все процессы имеют уникальные идентификаторы PID, которые автоматически присваиваются каждому процессу когда он создается в операционной системе, что позволяет ядру системы различать процессы.
При необходимости можно узнать PID (идентификатор процесса).
Как узнать PID (идентификатор процесса) в диспетчере задач
Чтобы узнать PID (идентификатор процесса), откройте диспетчер задач и перейдите на вкладку Процессы, затем нажмите правой кнопкой мыши на заголовок таблицы и в контекстном меню выберите пункт ИД процесса
.

Теперь найдите нужный процесс, и в столбце ИД процесса
будет отображен идентификатор соответствующего процесса.

Как узнать PID (идентификатор процесса) в командной строке
Также узнать PID (идентификатор процесса) можно используя командную строку.
Запустите командную строку
и выполните следующую команду:
Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.

Также можно отобразить процессы в виде списка, для этого в командной строке выполните следующую команду:
tasklist /fo list
Найдите нужный процесс, в строке PID
будет отображен идентификатор процесса.

Используя рассмотренные выше действия, можно узнать PID (идентификатор процесса) в операционной системе Windows.
PID, the abbreviation of Process Identifier, is a unique number used to identify every running process or service in operating system like Windows, MacOS, and Linux. In this post, we will walk you through three methods of how to find out the PID (Process ID) in Windows
.
Get PID by Task Manager
Whether in Windows 7 or Windows 10, you can both get the PID (Process ID) by Task Manager. Here are the detailed steps.
Step 1: Press Ctrl + Shift + Esc
simultaneously to open Task Manager window.
Step 2: If the window shows in a simplified summary mode, click More details
in the bottom left corner.

Step 3: On Task Manager window, click Details
tab. Then the PID is shown on the screen. Finally, you can check the process id of every running process and deal with it as you want.


Get PID by Command Line
It is also so convenient that you can check PID (Process ID) by command line within just two steps. Here is the guide.
Step 1: Press Windows Key + R
to open a run window. Then type cmd
and press Enter
to open Command Prompt window.

Step 2: In Command Prompt window, type tasklist
and press Enter
. Then, the details of running processes or services including the PID are listed on the screen.

PowerShell

Is there a command equivalent to ‘ps’ on Unix that can list all processes on a Windows machine?
asked Sep 10, 2008 at 5:50
Working with cmd.exe:
If you have Powershell
:
(you can query remote machines as well with /node:ComputerOrIP
, and there are a LOT more ways to customize this command: link
)
answered Sep 10, 2008 at 5:52
Factor Mystic
7 gold badges
47 silver badges
53 bronze badges
I wanted to mention that WMIC (pam’s entry) can do a lot
more. Взгляните на мою страницу фрагментов WMIC, которая представляет собой шпаргалку, показывающую многие распространенные способы использования WMIC (с показанным примером вывода) здесь
ответил 15 сен 2008 в 9:53
4 серебряных значка
10 бронзовых знаков
WMIC /OUTPUT:C:\ProcessList.txt ПРОЦЕСС get Caption,Commandline,Processid
WMIC /OUTPUT:C:\ProcessList.txt path win32_process get Caption,Processid,Commandline ответил 15 февраля 2010 в 8:06
Пробовал на Windows 7. Команда такая: TASKLIST /FI "IMAGENAME eq application_name"
Например: c:\>TASKLIST /FI "IMAGENAME eq notepad.exe"
Чтобы показать весь процесс с информацией о порте:
c:\> TASKLIST Также для завершения процесса можно использовать c:\> pskill or tskill processname
Например: c:\> tskill notepad
ответил 8 ноя 2011 в 11:56
список задач или pslist
от сисинтерналс. Кроме того, процесс get превосходен для PowerShell
.
ответил 10 сен 2008 в 5:57
1 золотой значок
13 серебряных значков
23 бронзовых знака
Если вы используете Powershell
, у него есть команда ‘ps’ (псевдоним Get-Process)
ответил 10 сентября 2008 г. в 7:48
Чтобы убить процесс, используйте:
TASKKILL /F /IM processname.exe TASKKILL /F /IM firefox.exe

15 золотых значков
57 серебряных значков
68 бронзовых знаков
ответил 8 мая 2013 в 11:58
Если вы используете Windows XP, попробуйте использовать команду ‘tasklist’. Я попробовал это с Vista, и, похоже, это тоже работает.
ответил 10 сентября 2008 г. в 5:52
1 золотой значок
2 серебряных значка
5 бронзовых знаков
открыть командную строку Windows
C:\>tasklist // list all the tasks
C:\>Taskkill /IM firefox.exe /F // Kill task by name C:\>Taskkill /PID 26356 /F // kill task by PId ответил 1 июня 2018 в 4:58
Используйте эту команду, чтобы увидеть все процессы в Windows-машине
ответил 5 сен 2014 в 7:30

1 серебряный значок
6 бронзовых знаков
Вызывается из той же программы, запущенной как обычный процесс (не как служба), она запустилась.
Нет помощи, чтобы изменить это. Я не мог найти никакой причины или решения, но вместо этого использовал «pslist/accepteula» sysinternal.
Та же проблема с taskkill: пришлось заменить на pskill.
ответил 16 мая 2012 в 6:58
Я сделал msproject (исходный код), архив доступен по адресу:
Архив проекта lsproc.zip
и исполняемый файл:
Двоичный файл lsproc.exe
это инструмент командной строки
вывод:
lsproc
Thierry Bremard
t.bremard@gmail.com
list binary files and driver with their local path on disks
most of code retreived from msdn site
--------------------
Process ID: 0
--------------------
Process ID: 4
<unknown> (PID: 4)
<unknown> PageFaultCount : 0x00002E4B PeakWorkingSetSize : 0x00419000 WorkingSetSize (Mem usage) : 0x0003A000 (232 ko) QuotaPeakPagedPoolUsage : 0x00000000 QuotaPagedPoolUsage : 0x00000000 QuotaPeakNonPagedPoolUsage : 0x00000000 QuotaNonPagedPoolUsage : 0x00000000 PagefileUsage : 0x00000000 PeakPagefileUsage : 0x00000000
--------------------
Process ID: 764
smss.exe (PID: 764)
\SystemRoot\System32\smss.exe PageFaultCount : 0x000000D6 PeakWorkingSetSize : 0x00082000 WorkingSetSize (Mem usage) : 0x0006C000 (432 ko) QuotaPeakPagedPoolUsage : 0x00006C34 QuotaPagedPoolUsage : 0x00001854 QuotaPeakNonPagedPoolUsage : 0x000004D8 QuotaNonPagedPoolUsage : 0x00000280 PagefileUsage : 0x0002C000 PeakPagefileUsage : 0x00030000
--------------------
Process ID: 816
--------------------
Process ID: 844
winlogon.exe (PID: 844)
\??\C:\WINDOWS\system32\winlogon.exe PageFaultCount : 0x0000261D PeakWorkingSetSize : 0x00B58000 WorkingSetSize (Mem usage) : 0x0029B000 (2668 ko) QuotaPeakPagedPoolUsage : 0x0001B054 QuotaPagedPoolUsage : 0x000185A4 QuotaPeakNonPagedPoolUsage : 0x0000C988 QuotaNonPagedPoolUsage : 0x0000B6A0 PagefileUsage : 0x005EC000 PeakPagefileUsage : 0x006C6000
--------------------
... PeakPagefileUsage : 0x03277000
--------------------
Process ID: 2712
lsproc.exe (PID: 2712)
C:\Documents and Settings\LoginX\Bureau\lsproc.exe PageFaultCount : 0x000000EC PeakWorkingSetSize : 0x000F1000 WorkingSetSize (Mem usage) : 0x000E4000 (912 ko) QuotaPeakPagedPoolUsage : 0x000032B4 QuotaPagedPoolUsage : 0x000032B4 QuotaPeakNonPagedPoolUsage : 0x00000400 QuotaNonPagedPoolUsage : 0x00000398 PagefileUsage : 0x00042000 PeakPagefileUsage : 0x0005C000
There are 131 drivers:
-------------------- 1: ntkrnlpa.exe
\WINDOWS\system32\ntkrnlpa.exe
-------------------- 2: hal.dll
\WINDOWS\system32\hal.dll
-------------------- 3: KDCOM.DLL
\WINDOWS\system32\KDCOM.DLL
-------------------- 4: BOOTVID.dll
\WINDOWS\system32\BOOTVID.dll
...
-------------------- 129: HTTP.sys
\SystemRoot\System32\Drivers\HTTP.sys
-------------------- 130: hiber_WMILIB.SYS
\SystemRoot\System32\Drivers\hiber_WMILIB.SYS
-------------------- 131: ntdll.dll
\WINDOWS\system32\ntdll.dll
-------------- ответил 25 марта 2011 в 18:47
Тьерри Бремар
С помощью WMI и Powershell вы можете:
Get-WMIObject -Class Win32_Process Затем вы можете отфильтровать свойства, используя Select-Object
и показать в графическом интерфейсе, используя Out-GridView
.
ответил 16 сен 2020 в 7:29

2 золотых значка
19 серебряных значков
32 бронзовых знака
выполняется в cmd,дескриптор — это идентификатор процесса:
wmic.exe path Win32_Process where handle='22792' get Commandline /format:list /path/to/app.exe [args specified goes here] ответил 17 июн 2021 в 2:38
2 бронзовых знака
Здравствуйте, если вы хотите получить список идентификаторов запущенных процессов на компьютере с Windows, откройте cmd
экран и тип:
netstat -aon | more используйте Enter
клавиша для прокрутки.
ответил 14 авг 2014 в 14:05
- Румата
Тема: CMD/BAT: Регистрация Идентификатор процесса внедряется cmd.exe
Среди многообразия командных процессоров cmd.exe отличается особой бедностью и скупостью программных средств. Самоидентификация, или охват информации о себе – одно из них. В данном случае речь идет о PID или ProcessID, идентификаторе процесса. cmd.exe не может дать свой PID.
И так! Пафосное вступление закончилось. А теперь суть.
Зачем может понадобиться PID? Это уникальное число в данный момент времени.
— С помощью PID просто сослаться именно на свой процесс (утилита tasklist ненадежна – достаточно запустить две копии cmd.exe и вы уже не знаете кто из них кто).
— Может быть удобно при создании временных файлов, каталогов (использование переменной %RANDOM% в качестве части имени файла приводит к конфликтам – CMD/BAT: Проблема создания уникальных значений в конвейерных командах
)
Предлагаю небольшой скриптик cmdpid.bat
, который помогает идентифицировать PID текущей (!!!) копии cmd.exe. Найденное значение записывается в переменную окружения CMDPID. Функционал реализован на powershell. Суть скрипта в 4 строках после метки :cmdpid, которые можно смело скопировать в свой скрипт; все остальные – суть обвязка для удобства использования в качестве самостоятельной утилиты.
@echo off
if "%~1" == "/?" goto :help
if "%~1" == "-?" goto :help
if /i "%~1" == "/h" goto :help
if /i "%~1" == "-h" goto :help
for %%p in ( powershell.exe ) do if "%%~$PATH:p" == "" ( >&2 echo:%%p required. exit /b 1
)
:cmdpid
for /f "tokens=*" %%p in ( ' set "PPID=(Get-WmiObject Win32_Process -Filter ProcessId=$P).ParentProcessId" ^& ^ call powershell -NoLogo -NoProfile -Command "$P = $pid; $P = %%PPID%%; %%PPID%%"
' ) do set CMDPID=%%p
goto :EOF
:help
echo:Calculates the Process ID of the Command Prompt
echo:and assigns it to the CMDPID variable.
echo:
echo:Usage: %~n0 Yury
- Yury
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Rumata
, как вариант:
@for /f %%i in ('set "x=%~f0"^& call wmic process where "CommandLine like '%%%%x:\=\\%%%%'" get ProcessId^| findstr [0-9]') do @set PID=%%i& call echo %%PID%%& pause>nul& exit /b Rumata
- Rumata
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Yury
, Ваш вариант с использованием WMIC работает. Однако он не дает гарантии, что в данный момент запущен единственный экземпляр скрипта, например в конвейере.
greg zakharov
- greg zakharov
Re: CMD/BAT: Определение Process ID текущего cmd.exe
А Ваш, нужно, полагать, дает? И потом, зачем WMI, когда есть счетчики производительности? ![]()
(New-Object Diagnostics.PerformanceCounter('Process', 'Creating Process ID', 'cmd')).RawValue greg zakharov
- greg zakharov
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Если бы Вы предложили эдакий хак с typeperf и tasklist – другое дело, в противном случае это уже из области Managed CMD\BAT.
greg zakharov
- greg zakharov
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Между прочим, способ не универсальный: что, если пользователь привык работать с урезанными правами в системе?
Yury
- Yury
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Rumata
, у меня есть большое подозрение, что “WMIC” сортирует одноимённые процессы по их дате создания, начиная со старшей, поэтому, если это подтвердится, то в моём коде, например, достаточно поставить скобки, чтобы получить гарантию, что полученный “PID” относится к текущему процессу, а не к процессу, запущенному ранее:
@(for /f %%i in ('set "x=%~f0"^& call wmic process where "CommandLine like '%%%%x:\=\\%%%%'" get ProcessId^| findstr [0-9]') do @set PID=%%i)& call echo %%PID%%& pause>nul& exit /b Rumata
- Rumata
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Yury
запустите следующий код в виде
чтобы увидеть, что время создания процессов в подавляющем большинстве случаев одинаково.
@wmic path win32_localtime get second /value >&2 есть счетчики производительности
я не сомневаюсь в Вашей компетентности в powershell. Однако мне не понятно как счетчики производительности могут помочь в определении PID текущего экземпляра cmd.exe.
что, если пользователь привык работать с урезанными правами в системе?
Не могу ответить. У меня нет такой возможности.
Yury
- Yury
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Rumata
, да, время одинаковое, но у Вас речь идёт о секундах. А вот так всегда разное:
@wmic os get LocalDateTime /value .
А ведь “WMIC” при сортировке ориентируется именно на этот формат.
greg zakharov
- greg zakharov
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Однако мне не понятно как счетчики производительности могут помочь в определении PID текущего экземпляра cmd.exe.
Не могу ответить. У меня нет такой возможности.
Тогда проблема на порядок выше, чем кажется.
Rumata
(изменено: Rumata, 2014-12-21 14:46:37)
- Rumata
Re: CMD/BAT: Определение Process ID текущего cmd.exe
Yury
Видимо Вы не видите проблему, о которой я говорю. Запустите свой скрипт в конвейере. У Вас почти всегда будет одинаковое время.
Коллега, не могли бы Вы выражать свои мысли яснее? Короткие фразы в контексте Ваших мыслей сложно понять в контексте тематической дискуссии.
Solution 1
Here’s what I use:
@echo off
rem there is a tab in the file at the end of the line below
set tab=
set cmd=javaw -jar lib\MyProg.jar
set dir=%~dp0
echo Starting MyProg
set pid=notfound
for /F "usebackq tokens=1,2 delims=;=%tab% " %%i in ( `wmic process call create "%cmd%"^, "%dir%"`
) do ( if /I %%i EQU ProcessId ( set pid=%%j )
)
echo %pid% > MyProg.pid The directory is set to the directory that the cmd file is located in. Change dir
to alter that. Modify cmd
to change which command is run.
If you want a stop.cmd that kills it, it would look like this
@echo off
for /F %%i in (%~dsp0MyProg.pid) do taskkill /F /PID %%i
del %~dsp0MyProg.pid Solution 2
you can use vbscript, here’s an example creating notepad, then terminating it using its pid
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("notepad.exe", null, objConfig, PID)
If errReturn = 0 Then WScript.Echo "Process ID is: " & PID
End If
WScript.Echo "Ready to kill process: " & PID & "? [Y|y]"
Do While Not WScript.StdIn.AtEndOfLine strInput = strInput & WScript.StdIn.ReadLoop
If LCase(strInput) = "y" Then WScript.Echo "Select * from Win32_Process Where ProcessId = '" & PID & "'" Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessId = '" & PID & "'") For Each objProcess in colProcessList objProcess.Terminate() Next
End If save as myscript.vbs and on command line
c:\test> cscript /nologo myscript.vbs Solution 3
Most often you do know what task you start – in this case, which page iexplorer shall show.
So how about
taskkill /FI "Windowtitle eq *yourpagetitle*" It will kill all instances of something showing your page title, but with a specific title most often there should be exactly one.
Решение 4
Решение 5
Эммм, Список задач
& TaskKill
?!
Похожие видео на Youtube
@echo off
rem there is a tab in the file at the end of the line below
set tab=
set cmd=javaw -jar lib\MyProg.jar
set dir=%~dp0
echo Starting MyProg
set pid=notfound
for /F "usebackq tokens=1,2 delims=;=%tab% " %%i in (
`wmic process call create "%cmd%"^, "%dir%"`
) do (
if %%j gtr 0 (
set pid=%%j
)
)
echo %pid% > MyProg.pid
06 : 15
Linux — найти и убить процесс
03 : 41
Ubuntu: Как найти идентификатор процесса (PID) работающей терминальной программы?
10 : 22
8 1 Список процессов, запущенных в системе Командная строка Linux
![]()
13 : 47
Процессы Linux, init, fork/exec, ps, kill, fg, bg, jobs
![]()
10 : 14
![]()
07 : 02
22 Получение идентификатора процесса запущенной программы Учебник по оболочке Linux
![]()
05 : 56
![]()
11 : 50
![]()
04 : 17
убить процесс по pid или имени через cmd - windows
Комментарии
-
Есть ли способ сделать это исключительно в файле .bat?
Цель - запустить
iexplore.exe, а затем убейте только этот экземпляр, когда он будет завершен. -
поэтому у меня есть 7 процессов Iexplore, и я запускаю еще один. Как мне захватить этот PID при запуске?
- Разве вы не можете сделать TaskList перед его запуском и после, сравнить их и получить свой PID? -- Я знаю, что это не самый простой способ, но я не знаю хорошего способа сделать это с помощью обычного сценария Windows.
мы все еще застряли с IE6 здесь! Так что все они находятся в отдельных процессах, но я думал, что более поздние версии с вкладками все еще использовали процессы за кулисами.
taskkill /FI "Windowtitle eq *yourpagetitle*"
Я только что попробовал вызов wmic на Windows 7, и он работает. Возможно, парсинг результата как-то идет не так, позже проверю.
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("notepad.exe", null, objConfig, PID)
If errReturn = 0 Then
WScript.Echo "Process ID is: " & PID
End If
WScript.Echo "Ready to kill process: " & PID & "? [Y|y]"
Do While Not WScript.StdIn.AtEndOfLine
strInput = strInput & WScript.StdIn.Read
Loop
If LCase(strInput) = "y" Then
WScript.Echo "Select * from Win32_Process Where ProcessId = '" & PID & "'"
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessId = '" & PID & "'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
End If
c:\test> cscript /nologo myscript.vbs
03 : 41
10 : 22



