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


1

我使用这个论坛来弄清楚如何使用vbscript静默/隐藏运行tomcat批处理文件。我使用的代码是这样的:

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

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


在任务管理器的“命令行”列中是否有运气?尝试使用options..select列(如果不存在的话)
barlop

Answers:


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命令解析。请参阅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  
    )

谢谢约瑟夫。好,这样对我有用。我得到的输出为-C:\ Windows \ system32 \ cmd.exe / c“” C:\ apache-tomcat-7.0.57 \ bin \ catalina.bat“运行” 4516。我需要从该字符串中提取PID。我尝试使用FOR / F从此输出中提取PID,但无法使其正常工作。有指针吗?
Kunal,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.