como identificar o processo para um arquivo em lote executado através de um vbscript

1

Eu usei este fórum para descobrir como executar o arquivo de lote do tomcat silenciosamente / oculto usando vbscript. O código que usei é este:

Set oShell = CreateObject("Wscript.Shell") 
Dim strArgs
strArgs = "%CATALINA_HOME%\bin\catalina.bat run"
oShell.Run strArgs, 0, false

No entanto, não consigo descobrir como parar esse processo, pois não consigo identificá-lo no gerenciador de tarefas. Como posso identificar um processo executado dessa maneira?

    
por Kunal 08.07.2015 / 20:40

1 resposta

2

Com um script ligeiramente modificado (como não sei se %CATALINA_HOME% contém um espaço):

Set oShell = CreateObject("Wscript.Shell")
Dim strArgs
strArgs = """%CATALINA_HOME%\bin\catalina.bat"" run"
oShell.Run strArgs, 0, false

use (da janela do interpretador de linha de comando)

wmic process where "name='cmd.exe'" get CommandLine, ProcessId

e, em seguida, reduza a saída da seguinte forma:

wmic process where "name='cmd.exe'" get CommandLine, ProcessId|findstr "catalina"

Wmic output pode ser analisado com o comando for /F . Veja WMIC e FOR /F de Dave Benham: uma correção para o% final<CR> problem .

Editar . No próximo trecho de código, há apenas echo taskkill em vez de operacional taskkill ; Observe também que % é dobrado em WQL (SQL para WMI) consulta como %% (escapou seu significado especial no Windows CLI):

for /F "usebackq tokens=*" %%G in (
      'wmic process where "CommandLine like '%%catalina.bat%%' AND Caption like '%%cmd.exe%%'" get ProcessID/value ^|find /I "="'
    ) do (
        for /F "tokens=2 delims==" %%H in ("%%~G") do echo taskkill /T /F /PID %%H  
    )
    
por 08.07.2015 / 21:20

Tags