运行调用bat文件的cmd.exe并等待完成

时间:2016-07-12 09:08:18

标签: vbscript win32-process

我需要能够以特殊权限运行cmd.exe来运行bat文件并等到它完成。

我已经设法打开了具有特殊权限的cmd.exe,但是在bat文件完成之前我找不到等待。 我无法使用WScript.Shell,因为cmd.exe使用cimv2以特殊权限打开。

Dim WMIObj, strHost, intProcessID

On Error Resume Next

strHost = "."

Set WMIObj = GetObject("winmgmts:\\" & strHost & "\root\cimv2:Win32_Process")
If IsObject(WMIObj) Then
    WMIObj.Security_.Privileges.AddAsString "SeRestorePrivilege", True
    WMIObj.Create "cmd.exe /c cd /d c:\temp && asd.cmd && pause", Null, Null, intProcessID
End If

Set WMIObj = Nothing

1 个答案:

答案 0 :(得分:0)

添加循环以等待PID intProcessID的进程消失:

Set wmi = GetObject("winmgmts://./root/cimv2")
Do
  WScript.Sleep 100
  Set p = wmi.ExecQuery("SELECT * FROM W32_Process WHERE ProcessID=" & intProcessID)
Until p.Count = 0