Find process name by its process id
The basic one, ask tasklist to filter its output and only show the indicated process id information
tasklist /fi "pid eq 4444"
To only get the process name, the line must be splitted
for /f "delims=," %%a in ('
tasklist /fi "pid eq 4444" /nh /fo:csv
') do echo %%~a
In this case, the list of processes is retrieved without headers (/nh
) in csv format (/fo:csv
). The commas are used as token delimiters and the first token in the line is the image name
note: In some windows versions (one of them, my case, is the spanish windows xp version), the pid filter in the tasklist does not work. In this case, the filter over the list of processes must be done out of the command
for /f "delims=," %%a in ('
tasklist /fo:csv /nh ^| findstr /b /r /c:"[^,]*,"4444","
') do echo %%~a
This will generate the task list and filter it searching for the process id in the second column of the csv output.
edited: alternatively, you can suppose what has been made by the team that translated the OS to spanish. I don’t know what can happen in other locales.
tasklist /fi "idp eq 4444"
Getting process id of exe running in bat file
Extending foxidrive’s answer to show the OP’s call that requires arguments:
set "exe=las2xyz.exe"
set "arg1=[ flightpath 2 out 5 lasformat 1 target 0 FIXCLASS 1 step 20 unit *METRIC* fov 20.0 rollfix 1 sn_number *H68_038-003* lsystem *LIDAR_1* DESTSYS 144 minele -100.00 maxele 6000.00 hoff 0.00 eoff 0.00 noff 0.00 bootnr 13110201 leg 1]"
set "arg2=C:UsersDeveloper-OneDesktoplas2xyz_Data131102_003243_GPE.sdc"
set "arg3=\192.168.0.102agisMacquarie_Barwon_1310Area_01sbet_038_13110201.out"
set "arg4=131102_003243_cov"
for /f "tokens=2 delims==; " %%A in (
'wmic process call create '"%exe%" "%arg1%" ^, "%arg2%" "%arg3%" - "%arg4%"' ^| find "ProcessId"'
) do set "PID=%%A"
echo "%PID%"
The content of the quoted arguments can contain pretty much anything except for double quote or comma. If a comma is used between arguments then it must be escaped.
There may be another syntax that allows commas within arguments, but then it would not allow parentheses within arguments.
So what to do if your command line cannot be passed through WMIC PROCESS CALL CREATE?
There is a solution. But it is not pretty 😉 I first posted this at Escaping strings when using wmic
@echo off
setlocal enableDelayedExpansion
:: Get the PID and UID for this batch process
call :getMyPID
:: Initialize an existing PIDs list
set "PIDs= "
:: Get a list of all existing child processes, except for the
:: child CMD.EXE process that was created by this FOR /F loop.
:: This is necessary because the console session that this script
:: is running in might have previously created a child process.
for /f %%A in (
'2^>nul wmic process where "ParentProcessID=%myPID% and not CommandLine like '%%<%UID%>%%'" get ProcessID'
) do for %%B in (%%A) do set "PIDs=!PIDs!%%B "
:: Create your new process as you normally would.
:: For this demonstration, I will simply create a new CMD.EXE session
start
:: Get the PID of the newly created child process by getting all child PIDs,
:: except for the child CMD.EXE process that was created by this FOR /F loop.
:: Ignore any PID that already exists in the %PIDs% list. The only PID left
:: is your new process.
for /f %%A in (
'2^>nul wmic process where "ParentProcessID=%myPID% and not CommandLine like '%%<%UID%>%%'" get ProcessID'
) do for %%B in (%%A) do if "!PIDs: %%B =!" equ "!PIDs!" set "PID=%%B"
:: At this point you could append the new PID to the PIDs list using
:: set "PIDs=!PIDs!%PID% "
:: Then you can repeat the steps of creating a new proces and getting the new PID
::
:: But instead, I will simply show the result and exit
echo new PID=%PID%
exit /b
:getMyPID
setlocal disableDelayedExpansion
:getLock
:: Establish a nearly unique temp file name using %time%
set "lock=%temp%%~nx0.%time::=.%.lock"
:: Transform the full path into a UID that can be used in a WMIC query
set "uid=%lock:=:b%"
set "uid=%uid:,=:c%"
set "uid=%uid:'=:q%"
set "uid=%uid:_=:u%"
setlocal enableDelayedExpansion
set "uid=!uid:%%=:p!"
endlocal & set "uid=%uid%"
:: Establish an exclusive lock on the temp file
:: If this fails, then loop back and try again until success
:: This guaranees no two process will ever have the same UID
2>nul ( 9>"%lock%" (
%= The FOR /F loops creates a child CMD.EXE process which in turn invokes WMIC. =%
%= The child CMD.EXE process contains the WMIC query with the UID in its command line. =%
%= The WMIC query identifies the CMD.EXE process with the UID in the command line, =%
%= and returns the parent process ID, which happens to be the PID for this batch script =%
for /f "skip=1" %%A in (
'wmic process where "name='cmd.exe' and CommandLine like '%%<%uid%>%%'" get ParentProcessID'
) do for %%B in (%%A) do set "PID=%%B"
(call ) %= Guarantee success so we don't accidently loop again =%
))||goto :getLock
:: Delete the temp file
del "%lock%" 2>nul
:: Return the result
( endlocal
set "myPID=%PID%"
set "UID=%uid%"
)
exit /b
Краткая информация google chrome
Описание: Google Chrome — наиболее быстро развивающийся браузер, во многом, благодаря открытому исходному коду Chromium, благодаря которому оперативно выпускает новые версии и при этом, быстро ликвидирует все имеющиеся уязвимости. Обозреватель имеет простой минималистичный дизайн, что облегчает интернет-серфинг, так как ничто не отвлекает пользователя от содержимого веб-страницы. Вкладки браузера являются изолированными, что одновременно с повышением надёжности работы браузера, делает посещение сайтов более безопасным. Chrome имеет встроенный движок JavaScript, значительно ускоряющий обработку скриптов и увеличивающий скорость работы в Интернете.
Разработчик: Google
Поддерживаемые форматы: HTML,HTM,SHTML,XHTML,TXT,TEXT,JPE,JPG,JPEG,GIF,MHTML,PNG,BMP,ICO,SVG,SVGZ,XML,PDF,SWF
Оф. сайт: google.com
Платный аналог: e-Capsule Browser
Русский язык: Имеется
Статус: Freeware
Исходники: Закрыты
Особенности:
— Единственное окно для решения большинства задач.
— Ярлыки приложений и динамические вкладки.
— Возможность безопасного просмотра сомнительных сайтов, а также наличие режима “инкогнито”.
— Лёгкий процесс создания закладок, а также возможность их импорта из других браузеров.
— Высокая скорость работы и надёжность.
— Полностью автоматический процесс обновления.
Полная информация google chrome
Описание: Google Chrome — наиболее быстро развивающийся браузер, во многом, благодаря открытому исходному коду Chromium, благодаря которому оперативно выпускает новые версии и при этом, быстро ликвидирует все имеющиеся уязвимости. Обозреватель имеет простой минималистичный дизайн, что облегчает интернет-серфинг, так как ничто не отвлекает пользователя от содержимого веб-страницы. Вкладки браузера являются изолированными, что одновременно с повышением надёжности работы браузера, делает посещение сайтов более безопасным. Chrome имеет встроенный движок JavaScript, значительно ускоряющий обработку скриптов и увеличивающий скорость работы в Интернете.
Разработчик: Google
Поддерживаемые форматы: HTML,HTM,SHTML,XHTML,TXT,TEXT,JPE,JPG,JPEG,GIF,MHTML,PNG,BMP,ICO,SVG,SVGZ,XML,PDF,SWF
Оф. сайт: google.com
Платный аналог: e-Capsule Browser
Русский язык: Имеется
Статус: Freeware
Исходники: Закрыты
Особенности:
— Единственное окно для решения большинства задач.
— Ярлыки приложений и динамические вкладки.
— Возможность безопасного просмотра сомнительных сайтов, а также наличие режима “инкогнито”.
— Лёгкий процесс создания закладок, а также возможность их импорта из других браузеров.
— Высокая скорость работы и надёжность.
— Полностью автоматический процесс обновления.
Системные требование:
Процессор: 2200 MHz
ОЗУ: 512 Мб
Жесткий диск: 100 Мб
Аудиокарта: Любая совместимая аудиокарта
Видеокарта: 64 Мб
Архитектура: x86 или x64
Система: Windows XP, Windows Vista, Windows 7, Windows 8
Индекс полезности:
Скорость: 100
Практичность: 100
Надежность: 100
Функциональность: 100
Информация о файле:
Тихая установка: /install
Варианты дистрибутива: Только установочная
Инсталлятор: Без тулбаров
Сертификат: Имеется
Конкуренты:
360-browser
safari
avant-browser
baidu-spark
blackhawk-browser
browzar
chrome-hybrid
chromium
cometbird-browser
comodo-dragon
comodo-icedragon
coolnovo
coowon
cyberfox
dooble
epic-browser
firefox
firefox-hybrid
greenbrowser
internet-explorer
k-meleon
lunascape-browser
maxthon-browser
opera
opera-hybrid
opera-unofficial
orbitum
orca-browser
pale-moon
qip-surf
qupzilla
seamonkey
sleipnir
slimbrowser
slimjet
srware-iron
superbird
theworld-browser
tor-browser-bundle
torch-browser
waterfox
wyzo
yandex-browser
Управление процессами из командной строки
Для управления процессами Windows существует много разных утилит и приложений. Как правило, для этих целей командная строка используется очень редко. Но в некоторых случаях, это единственная возможность и другие средства недоступны. Такое может возникнуть при блокировке стандартных диспетчеров различными вирусами и другими, нехорошими программами. Поэтому, будет очень полезно знать и уметь работать с процессами через командную строку.
Чтобы управлять процессами, при помощи возможностей командной строки, в системе предусмотрено два специальных приложения: tasklist и taskkill. Из их названия можно догадаться и об их предназначении — первое может отображать список всех запущенных процессов на данном компьютере, или на удаленной машине, а вторая умеет их останавливать. Давайте глянем, как это работает на практике.
Введите, в окне терминала, tasklist и командная строка выдаст весь список рабочих процессов на данном компьютере.
Все данные будут отображаться в табличной форме, но можно поменять вид данных в другой формат. Воспользуйтесь параметром /fo и все отобразится в виде списка (или как CSV), а если использовать параметр /v, то в этот список будут включены более подробные данные о каждом процессе. Введите команду taskliist /v /fo list (без кавычек естественно) и в окне должна появиться приблизительно такая картина.
Обычно список выходит немалых размеров, и чтобы не листать его слишком долго, выполним более точный запрос. Для этих целей существует параметр /fi, способный уточнить поиск процессов используя фильтры. Для примера, введем команду, которая отобразит все процессы, запущенные от имени пользователя user и занимающие до 40 мегабайт в памяти компьютера. Команда выглядит следующим образом: tasklist /fi »username eq user» /fi »memusage le 40000». А на рисунке ниже представлен результат работы команды.
Допустим, мы нашили процессы, которые хотим завершить. Теперь настал черед утилиты «taskkill». Для прекращения работы процесса можно использовать его имя, или идентификатор PID, а можно прекращать процессы используя разные фильтры. Для эксперимента, мы запустим несколько окон программы Блокнот (notepad.exe) и на них испытаем разные способы.
При помощи параметра /f процесс будет завершен в принудительном порядке, а если добавить еще ключ /t — завершатся все другие, которые были через него запущенны. Чтобы узнать больше возможностей, для команд tasklist и taskkill, добавьте к ним ключ /?. Он отобразит полную справку для этих утилит. Не будем забывать про такое мощное средство, как PowerShell. Мы можем им воспользоваться и прям в этом же окне командной строки. Чтобы просмотреть весь список процессов, запустите команду Get-Process.
Чтобы опять не рыться во всех найденных процессах, можно задать фильтр для получения отдельных, соответствующих критериям, процессов. Для этого существует команду Where-Object. Давайте получим табличку с процессами, загружающими процессор на данном компьютере и выстроим их в порядке возрастания нагрузки. Воспользуемся командой следующего вида: Get-Process | where {$_.cpu -gt 0} | sort cpu
Результат будет иметь приблизительно такой вид:
Здесь можно получить полную информацию о любом запущенном процессе. Сейчас мы узнаем список всех свойств процесса cmd. Это можно сделать при помощи такой команды:
Get-Process -Name cmd | Get-Member -Membertype property
Выведем только нужные свойства. Например, оставим только имя, идентификатор процесса, путь к его исполнительному файлу, подключенные модуле и время, когда процесс был запущен. Все это мы выводим списком, при помощи такой команды:
Get-Process -Name cmd | Format-List name, id, path, modules, starttime
Благодаря этому мы узнаем о том, кто запустил процесс, как сильно он грузит систему, где располагается его файл и еще кучу разной, полезной и не очень информации.
Чтобы остановить процесс через PowerShell используйте специальный командой Stop-Process. Для того, чтобы указать нужный процесс для завершения, используйте его имя или идентификатор. Например, можно по конвейеру прекратить работу блокнота:
Get-Process | where {$_.name -match ″notepad″} | Stop-Process
Для работы с процессами на другом, удаленном компьютере необходимо использовать совсем другой командой — Get-WmiObject. Сейчас посмотрим, какие процессы запущенны на компьютере с именем «PC»:
Get-WmiObject win32_process -computername PC | ft name, processid, description
Чтобы узнать больше информации и различных ключей, для работы с процессами через PowerShell, используйте встроенную справку. Запустите команду Get-Help «имя команды» и появится справка по указанному параметру. Есть еще две дополнительные утилиты, способные выполнять операции с процессами. Ими являются Pslist и Pskill. Изначально их в системе нет, они входят в пакет PSTools.
Сами по себе эти приложения не нуждаются в установке. Их достаточно скопировать в любое место на своем жестком диске. Чтобы запустить, зайдите в папку, где они хранятся, и активируйте нужной командой.
Соответственно, утилита Pslist способна вывести информацию о процессах, запущенных на компьютере. Можно выборочно находить отдельные процессы и выводить их на экран. Давайте продолжим издеваться над запущенным блокнотом и просмотрим о нем информацию командой pslist notepad -x.
Интересной функцией Pslist является возможность работы в режиме диспетчера процессов. Вся информация постоянно обновляется и можно задавать подходящий интервал получения актуальных данных. За этот режим ответствен ключ -s. Допустим, необходимо установить режим диспетчера с обновлением каждые десять секунд, эта команда будет выглядеть так: tasklist -s -r 10
Завершить любой процесс можно при помощи утилиты Pskill. Введите эту команду и идентификатор процесса, или его имя. На рисунке ниже можете посмотреть, как это будет выглядеть в случае с бедным блокнотом.
Дополнительную информацию, в виде справки, можно открыть дополнительным параметром /?
Самый главный момент — командная строка, во всех случаях, должна быть запущена от имени администратора, иначе ничего не получится. Но если столкнетесь с какими-либо сложными проблемами, или возникнут вопросы, то всегда можно этим поделиться в комментариях к данной статье, и мы вместе постараемся разобраться.