Запустите процесс и верните его PID (как CHP.EXE) для пакетного файла

Я ищу что-то вроде ЧП.exe, он может выполнить команду и возвращает свой pid.
Я не могу использовать ТЭЦ.EXE, потому что это, кажется, сообщается как зараженный файл в некоторых антивирусов.

спасибо

21
задан Tobia
01.12.2022 18:32 Количество просмотров материала 2820
Распечатать страницу

3 ответа

Wmic process where (Name like '%CHP%') get caption, name, commandline, ProcessId | more

реальный пример:

Wmic process where (Name like '%ie%') get caption, name, commandline, ProcessId | more

выход:

ProcessId where like name Wmic Far manager

Wmic process get ProcessId

извлечь только processId в переменную из вывода запроса:

ProcID.cmd:

@ECHO OFF                                                                              
FOR /F %%T IN ('Wmic process where^(Name^="explorer.exe"^)get ProcessId^|more +1') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId = %ProcessId%                                                           

выход:

ProcessId = 2372    
4
отвечен STTR 2022-12-03 02:20

Это довольно просто сделать в PowerShell. Start-Process notepad.exe -PassThru запустит блокнот и возврата:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName                                                                                                                              
-------  ------    -----      ----- -----   ------     -- -----------                                                                                                                              
     45       6     1672       4240    61     0.02   9212 notepad   

оттуда вы можете использовать его как объект, сохраняя вывод ($notepad = Start-process notepad.exe -PassThru а то $notepad.ID) и закончить все сценарии вы делали с ним.

возврат к пакетному скрипту (если это абсолютно необходимо) немного сложнее. Если вы совершенно застряли в использовании пакетного файла, то, вероятно, проще всего написать сценарий PowerShell, который соответствующие сведения о файле или разделе реестра, вызовите сценарий PowerShell из пакетного файла, а затем прочитайте файл или раздел реестра далее в пакетном сценарии.

если вы не хотите, чтобы коснуться PowerShell на всех, то вам придется прибегнуть к WMIC или tasklist, чтобы найти процесс после его создания.

2
отвечен Tanner Faulkner 2022-12-03 04:37

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

for /f "tokens=2" %a in ('tasklist /nh /fi "imagename eq firefox.exe"') do echo %a

Он выведет pid исключительно в моем случае выход 5540

0
отвечен w17t 2022-12-03 06:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх