我使用这个论坛来了解如何使用 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 的WMIC
和FOR /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
)