Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получить текущий PID консоли (http://forum.oszone.net/showthread.php?t=254932)

Bruce Wayne 26-02-2013 00:27 2098939

Получить текущий PID консоли
 
Доброе время суток!

Извиняюсь, если эта тема уже была поднята, но я не нашёл таковой: подскажите, пожалуйста, как можно получить текущий PID данного Bat-файла, если его окно скрыто? Если окно есть, то всё легко и просто... Вроде, можно через WMIC как-то... Заранее спасибо!

Iska 26-02-2013 01:53 2099026

Bruce Wayne, PID пакетного файла получить невозможно, ибо, хоть его расширение числится среди исполняемых, ему нужен хост-испонитель, каковым является командный процессор cmd.exe. Вот его PID получить можно.

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

Цитата Bruce Wayne
Если окно есть, то всё легко и просто... »

именно про него?

Тогда попробуйте воспользоваться, например, WSH: WSH: как из скрипта определить его идентификатор процесса (PID).

Bruce Wayne 26-02-2013 13:09 2099239

Iska, спасибо большое!) Да, я написал бред, чтобы показать полную суть вопроса :D

Bruce Wayne 14-04-2013 13:52 2132249

Получилось реализовать вот таким методом (работает даже при скрытом окне):

Код:

@echo off
for /f "tokens=2 delims==" %%a in (
'"WMIC PROCESS Where (Name="cmd.exe" AND CommandLine LIKE "%%%RANDOM%%RANDOM%%%") Get ParentProcessId /Value"'
) do set PID=%%a
echo %PID%
pause

Может, пригодится кому :)

Foreigner 14-04-2013 14:35 2132261

Bruce Wayne,

Не работает. Выдает PID консоли.

screenshot

sov44 14-04-2013 15:14 2132286

Foreigner, на xp pro x86 работает

Iska 14-04-2013 20:58 2132539

Foreigner, а что должно быть? Пакетный файл, запущенный из командного процессора, не порождает нового процесса cmd.exe.

Foreigner 14-04-2013 22:09 2132619

Цитата:

Цитата Iska
а что должно быть? »

Я так понял, что:
Цитата:

Цитата Bruce Wayne
получить текущий PID данного Bat-файла »


Iska 15-04-2013 00:27 2132724

Ну, сам пакетный файл не может иметь PID: он хоть и числится в исполняемых, но — обычный текст. Потому корректно вопрос будет звучать так: «получить PID командного процессора, исполняющего данный пакетный файл».


Время: 08:33.

Время: 08:33.
© OSzone.net 2001-