Execute um processo e retorne seu PID (como CHP.EXE) para um arquivo em lotes

6

Estou procurando algo como o chp.exe, ele pode executar um comando e retornar seu pid. Eu não posso usar CHP.EXE porque parece ser relatado como arquivo infectado em alguns antivírus.

Obrigado

    
por Tobia 20.05.2013 / 17:16

3 respostas

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

amostra real:

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

Saída:

WmicprocessgetProcessId

extraiapenasoprocessIdemumavariáveldasaídadaconsulta:

ProcID.cmd:

@ECHOOFFFOR/F%%TIN('Wmicprocesswhere^(Name^="explorer.exe"^)get ProcessId^|more +1') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId = %ProcessId%                                                           

Saída:

ProcessId = 2372    
    
por 20.05.2013 / 17:38
2

Isso é bastante simples de se fazer no PowerShell. Start-Process notepad.exe -PassThru iniciará o bloco de notas e retornará:

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

De lá, você poderia usá-lo como um objeto armazenando a saída ( $notepad = Start-process notepad.exe -PassThru e, em seguida, $notepad.ID ) e terminar o script que estava fazendo com ele.

Colocá-lo de volta em um script em lote (se for absolutamente necessário) é um pouco complicado. Se você está absolutamente preso em usar um arquivo em lotes, provavelmente seria mais fácil escrever um script do PowerShell que grava as informações relevantes em um arquivo ou chave do Registro, chamar o script do PowerShell do arquivo em lotes e ler o arquivo ou reg chave mais tarde no script em lote.

Se você não quiser tocar no PowerShell, precisará recorrer à WMIC ou à lista de tarefas para localizar o processo depois de criá-lo.

    
por 20.05.2013 / 17:43
0

você pode executar o programa e, em seguida, emitir este comando, substituindo firefox pelo nome do processo desejado:

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

ele produzirá o pid somente, no meu caso, a saída é 5540

    
por 05.10.2014 / 08:30

Tags