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

Run a cmd.exe which calls a bat file and wait to finish

我需要能够 运行 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

添加一个循环等待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