Показать полную графическую версию : [решено] Как узнать PID дочернего процесса?
dima05605
01-12-2012, 20:39
Доброго времени суток!
Мне нужно узнать PID дочернего процесса. Как это реализовать?
В принципе, кроме особых случаев — никак. Можно, например, поизвращаться с классом «wmic.exe» Process и его методом Create, но это не для слабонервных.
Возможны обходные пути. Приведите детальную информацию.
dima05605
02-12-2012, 13:24
Я пишу панель управления своим хостингом. Так вот там мне надо сделать так, чтобы батник запускал другие программы и останавливал их. Много программ совпадают в названии, поэтому надо как-то работать с PID'ом. То есть нужно создавать и "убивать" дочерние процессы.
dima05605
02-12-2012, 13:56
Хорошо, давайте подойдем с другой стороны. Мне надо узнать PID запущенной программы. То есть я запускаю любую программу из батника и мне надо узнать PID только что запущенной программы. Этого достаточно для моей задачи.
Запускайте не пакетным файлом. Используйте для этого WSH или PoSH.
P.S. У Вас не тот же посыл: CMD/BAT - [решено] Присвоение pid'a процессу при запуске. (http://forum.oszone.net/showthread.php?t=244087)?
dima05605
02-12-2012, 14:52
Вот нашел рабочий код. Он перезапускает программу по времени. А у меня неизвестно имя программы, известно только ее расположение.
@echo off
set PNAME=notepad.exe
set PPATH=%windir%\system32\notepad.exe
set TITLE=%RANDOM%%RANDOM%
TITLE %TITLE%
:LOOP
(Start "" "%PPATH%"
ping -w 780000 192.0.2.0 -n 1 >nul
for /f "tokens=2 delims=," %%a in ('TaskList /NH /FO CSV /FI "WINDOWTITLE eq %TITLE%"') do (
for /f "skip=1" %%b in ('WMIC PROCESS WHERE "ParentProcessId=%%~a AND Name='%%PNAME%%'" Get ProcessId^,SessionID') do (
taskkill /PID "%%b"
)))
GoTo:LOOP
dima05605
02-12-2012, 15:16
Так можете дать код, который бы показывал PID процесса при его запуске?
А у меня неизвестно имя программы, известно только ее расположение. »
Это как? Как можно запустить приложение, не указывая имя его исполняемого файла?
Так можете дать код, который бы показывал PID процесса при его запуске? »
Повторю (http://forum.oszone.net/post-2001156.html#post2001156).
dima05605
02-12-2012, 15:25
Мне WSH скрипт не нужен. Ладно, буду сам что-то решать...
Foreigner
02-12-2012, 16:44
dima05605, На примере калькулятопа
@echo off
setlocal
set "wmic=wmic process call create "calc" | findstr "ProcessId""
for /f "tokens=2 delims==;" %%i in (' "%wmic%" ') do set "pid=%%i"
echo %pid%
timeout /t 3
taskkill /pid %pid%
dima05605
04-12-2012, 18:15
@echo off setlocal set "wmic=wmic process call create "calc" | findstr "ProcessId"" for /f "tokens=2 delims==;" %%i in (' "%wmic%" ') do set "pid=%%i" echo %pid% timeout /t 3 taskkill /pid %pid% »
Все работает, спасибо. А как запустить что-то другое кроме калькулятора?
Foreigner
04-12-2012, 18:48
А как запустить что-то другое кроме калькулятора? »
... call create "C:\Some Folder\program.exe" ...
Malysh-ok
17-10-2013, 20:17
Всем доброго здравия.
А PID самой себя задача (батник) узнать может?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.