如何通过vbscript运行应用程序名称

时间:2016-12-12 06:10:59

标签: vbscript

我想通过vbscript获取正在运行的应用程序的名称列表,并通过其主窗口标题终止应用程序。这些申请应列在Task Manager -> Applications tab
像这样:
enter image description here
在网上搜索后,我发现了像this这样的vbscript:

'FUNCTION
Function ListProcessRunning()
'This function can report names from
'TaskManager -> Processes
    sComputerName = "."
    Set objWMIService = GetObject("winmgmts:\\" & sComputerName & "\root\cimv2")
    sQuery = "SELECT * FROM Win32_Process"
    Set objItems = objWMIService.ExecQuery(sQuery)
    'iterate all item(s)
    For Each objItem In objItems
        WScript.Echo objItem.Name
    Next
End Function

此vbscript列出Task Manager -> Processes tag下的所有进程名称,如下所示:
enter image description here
这不是我想要的。

我也发现了这个:

'FUNCTION
Function ListApplicationRunning()
'This function can report names from
'TaskManager -> Application

    Set Word = CreateObject("word.application") 
    For Each x In Word.Tasks
        WScript.Echo x.Name
    Next 
    Word.Quit 
    Set Word = Nothing 
End Function

这真的给了我我想要的但是问题是我要运行这个脚本的服务器没有Word因此对于vbscript没有word.application而且我无法为它安装一个。

我的问题是如何获取应用程序名称并以该名称终止应用程序?我不确定是否可以仅使用vbscript,可能是vbscriptcmd的组合也可以。

2 个答案:

答案 0 :(得分:1)

在vbscript中,我们可以做一些类似的尝试:

Option Explicit
Call KillProcessbyName("common-api.jar")
'*********************************************************************************
Sub KillProcessbyName(FileName)
    On Error Resume Next
    Dim WshShell,strComputer,objWMIService,colProcesses,objProcess
    Set WshShell = CreateObject("Wscript.Shell")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
    For Each objProcess in colProcesses
        If InStr(objProcess.CommandLine,FileName) > 0 Then
            If Err <> 0 Then
                MsgBox Err.Description,VbCritical,Err.Description
            Else
                objProcess.Terminate(0) 
            End if
        End If
    Next
End Sub
'**********************************************************************************

答案 1 :(得分:1)

FOR /F "usebackq tokens=1-2" %i IN (`tasklist ^|findstr /b "notepad"`) DO taskkill /PID %j