How to capture the PID of a process when launching it from command line?

前端 未结 8 1935
栀梦
栀梦 2020-11-30 13:48

Is there a way to do this purely in a .bat file?

The purpose is to launch iexplore.exe, then kill just that instance when it\'s finished.

8条回答
  •  我在风中等你
    2020-11-30 14:40

    you can use vbscript, here's an example creating notepad, then terminating it using its pid

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objStartup = objWMIService.Get("Win32_ProcessStartup")
    Set objConfig = objStartup.SpawnInstance_
    Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
    errReturn = objProcess.Create("notepad.exe", null, objConfig, PID)
    If errReturn = 0 Then
        WScript.Echo "Process ID is: " & PID
    End If 
    
    WScript.Echo "Ready to kill process: " & PID & "? [Y|y]"
    Do While Not WScript.StdIn.AtEndOfLine
       strInput = strInput & WScript.StdIn.Read(1)
    Loop
    If LCase(strInput) = "y" Then
        WScript.Echo "Select * from Win32_Process Where ProcessId = '" & PID & "'"
        Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessId = '" & PID & "'")
        For Each objProcess in colProcessList
            objProcess.Terminate()
        Next
    End If 
    

    save as myscript.vbs and on command line

    c:\test> cscript /nologo myscript.vbs
    

提交回复
热议问题