如何识别通过 vbscript 运行的批处理文件的进程

如何识别通过 vbscript 运行的批处理文件的进程

我使用这个论坛来了解如何使用 vbscript 静默/隐藏地运行 tomcat 批处理文件。我使用的代码如下:

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

但是,我无法弄清楚如何停止此进程,因为我无法在任务管理器中识别它。我如何识别以这种方式运行的进程?

答案1

稍微修改一下脚本(因为我不知道是否%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命令解析。请参阅 Dave Benham 的WMICFOR /F:修复尾随<CR>问题

编辑。在下一个代码片段中,只有echo taskkill而不是操作taskkill;还要注意的%WQL(用于 WMI 的 SQL)查询为%%(在 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  
    )

相关内容