Как получить pid процесса cmd

В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.

Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.

Все процессы имеют уникальные идентификаторы PID, которые автоматически присваиваются каждому процессу когда он создается в операционной системе, что позволяет ядру системы различать процессы.

При необходимости можно узнать PID (идентификатор процесса).

Как узнать PID (идентификатор процесса) в диспетчере задач

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

Как получить pid процесса cmd

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

Как получить pid процесса cmd

Как узнать PID (идентификатор процесса) в командной строке

Также узнать PID (идентификатор процесса) можно используя командную строку.

Запустите командную строку
и выполните следующую команду:

Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.

Как получить pid процесса cmd

Также можно отобразить процессы в виде списка, для этого в командной строке выполните следующую команду:

tasklist /fo list

Найдите нужный процесс, в строке PID
будет отображен идентификатор процесса.

Как получить pid процесса cmd

Используя рассмотренные выше действия, можно узнать 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.

see more details in task manager

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.

check pid in task manager

find pid property in task manager

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.

open cmd 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.

check pid in cmd

PowerShell

check pid in powershell window

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

readonly's user avatar

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
)

aggserp4's user avatar

answered Sep 10, 2008 at 5:52

Factor Mystic's user avatar

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

user4197's user avatar

4 серебряных значка
10 бронзовых знаков

  1. 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

Hafthor's user avatar

1 золотой значок
13 серебряных значков
23 бронзовых знака

Если вы используете Powershell
, у него есть команда ‘ps’ (псевдоним Get-Process)

ответил 10 сентября 2008 г. в 7:48

user15123's user avatar

Чтобы убить процесс, используйте:

 TASKKILL /F /IM processname.exe 
 TASKKILL /F /IM firefox.exe 

:/>  Rf online не видит видеокарту windows 10

Gaff's user avatar

15 золотых значков
57 серебряных значков
68 бронзовых знаков

ответил 8 мая 2013 в 11:58

Если вы используете Windows XP, попробуйте использовать команду ‘tasklist’. Я попробовал это с Vista, и, похоже, это тоже работает.

ответил 10 сентября 2008 г. в 5:52

Marcel's user avatar

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

spacedev's user avatar

Используйте эту команду, чтобы увидеть все процессы в Windows-машине

ответил 5 сен 2014 в 7:30

LOKESH's user avatar

1 серебряный значок
6 бронзовых знаков

Вызывается из той же программы, запущенной как обычный процесс (не как служба), она запустилась.

Нет помощи, чтобы изменить это. Я не мог найти никакой причины или решения, но вместо этого использовал «pslist/accepteula» sysinternal.

Та же проблема с taskkill: пришлось заменить на pskill.

ответил 16 мая 2012 в 6:58

Olivier Faucheux's user avatar

Я сделал 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

Wasif's user avatar

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

sammy's user avatar

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
:/>  H.265 vs H.264 сравнение форматов и что такое HEVC и AVC

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, когда есть счетчики производительности? http://powershell.com/cs/emoticons/emotion-8.gif




 (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.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

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.

:/>  Система Windows : Как изменить пароль-Renee Passnow

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

8 1 List processes running on a system Linux Command Line Эммм, Список задач
& 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 — найти и убить процесс

Linux - Find and Kill a Process 03 : 41
Ubuntu: Как найти идентификатор процесса (PID) работающей терминальной программы?

Ubuntu: How to find the Process ID (PID) of a running terminal program? 10 : 22
8 1 Список процессов, запущенных в системе Командная строка Linux

Linux processes, init, fork/exec, ps, kill, fg, bg, jobs

13 : 47

Процессы Linux, init, fork/exec, ps, kill, fg, bg, jobs

Process IDs in C

10 : 14

22 Get the Process ID of a Running Program Linux Shell Tutorial

07 : 02

22 Получение идентификатора процесса запущенной программы Учебник по оболочке Linux

Killing a Process or Application using terminal in linux OS || How to kill process in linux

05 : 56

Linux#6 - How to find process ID and kill - ps | kill

11 : 50

kill a process by pid or name via cmd - windows

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