1

Я использовал этот форум, чтобы выяснить, как запустить пакетный файл tomcat в режиме без вывода сообщений / скрытно, используя vbscript. Код, который я использовал, это:

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

Однако я не могу понять, как остановить этот процесс, так как не могу определить его в диспетчере задач. Как я могу определить процесс, запущенный таким образом?

1 ответ1

2

С немного измененным сценарием (поскольку я не знаю , содержит ли %CATALINA_HOME% пробел):

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

использовать (из окна интерпретатора командной строки)

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

и затем сузьте вывод следующим образом:

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

Wmic выход может быть проанализирован с помощью команды for /F См. WMIC и FOR /F Дейва Бенхэма : исправление проблемы с трейлингом <CR>.

Редактировать В следующем фрагменте кода есть просто echo taskkill вместо оперативного taskkill ; Также обратите внимание, что % удваивается в запросе WQL (SQL для WMI) как %% (исключено из специального значения в 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  
    )

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .