求一个vbs命令,普通的判断程序启动命令。

求一个vbs命令:
1、判断程序BstkSVC.exe是否启动成功,如果判断BstkSVC.exe没有启动,则重新启动计算机。
2、如果判断BstkSVC.exe启动成功则等待15分钟,然后再次判断BstkSVC.exe是否还在运行,如果还在运行则重启电脑,如果不运行则退出vbs脚本。

我给你写的代码如下


Set objWMIService = GetObject("winmgmts:")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='BstkSVC.exe'")

If colProcessList.Count = 0 Then
  'BstkSVC.exe is not running, restart the computer
  Set objShell = CreateObject("WScript.Shell")
  objShell.Run "shutdown /r /t 0"
Else
  'BstkSVC.exe is running, wait for 15 minutes
  WScript.Sleep 900000
  
  Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='BstkSVC.exe'")
  If colProcessList.Count > 0 Then
    'BstkSVC.exe is still running, restart the computer
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run "shutdown /r /t 0"
  Else
    'BstkSVC.exe is not running, exit the script
    WScript.Quit
  End If
End If


Dim objWMI, objProcess
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Do
  Set objProcess = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")
  If objProcess.Count = 0 Then
    WScript.Echo "BstkSVC.exe is not running, restarting the computer."
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "shutdown /r /t 0", 0, False
    WScript.Quit
  Else
    WScript.Echo "BstkSVC.exe is running, waiting for 15 minutes."
    WScript.Sleep 900000
    Set objProcess = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")
    If objProcess.Count = 0 Then
      WScript.Echo "BstkSVC.exe is not running, exiting the script."
      WScript.Quit
    Else
      WScript.Echo "BstkSVC.exe is still running, restarting the computer."
      Set objShell = WScript.CreateObject("WScript.Shell")
      objShell.Run "shutdown /r /t 0", 0, False
      WScript.Quit
    End If
  End If
Loop

将此代码保存为 .vbs 文件,并使用 CMD 或 Windows 资源管理器运行该脚本。

希望对你有所帮助,以下是代码及说明。
说明:
Wscript.Sleep 方法用于等待一段时间。
Wscript.Echo 方法用于输出消息到脚本窗口。
Wscript.CreateObject("Wscript.Shell") 创建一个 WScript.Shell 对象,该对象可用于运行命令行程序。
shutdown /r /t 0 表示立即重启计算机。


Dim objWMIService, colProcessList, objProcess, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")
If colProcessList.Count = 0 Then
    Wscript.Echo "BstkSVC.exe not running, restarting computer..."
    Set objShell = Wscript.CreateObject("Wscript.Shell")
    objShell.Run "shutdown /r /t 0", 0, True
Else
    Wscript.Echo "BstkSVC.exe running, waiting for 15 minutes..."
    Wscript.Sleep 15 * 60 * 1000
    Set colProcessList = objWMIService.ExecQuery _
        ("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")
    If colProcessList.Count > 0 Then
        Wscript.Echo "BstkSVC.exe still running, restarting computer..."
        Set objShell = Wscript.CreateObject("Wscript.Shell")
        objShell.Run "shutdown /r /t 0", 0, True
    Else
        Wscript.Echo "BstkSVC.exe not running, exiting script..."
    End If
End If

以下是一个使用 VBScript 实现上述功能的代码:

Set WshShell = WScript.CreateObject("WScript.Shell")

Do
  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'BstkSVC.exe'")

  If colProcess.Count = 0 Then
    WshShell.Run "shutdown /r /t 0", 0, True
  Else
    WScript.Sleep 900000
    Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'BstkSVC.exe'")
    If colProcess.Count > 0 Then
      WshShell.Run "shutdown /r /t 0", 0, True
    Else
      WScript.Quit
    End If
  End If
Loop

代码如下:

Set WshShell = CreateObject("WScript.Shell")

'Check if BstkSVC.exe is running
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcess = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")

If colProcess.Count = 0 Then
  'Restart the computer if BstkSVC.exe is not running
  WshShell.Run "shutdown -r -t 0", 0, False
Else
  'Wait for 15 minutes
  WScript.Sleep 900000

  'Check again if BstkSVC.exe is still running
  Set colProcess = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'BstkSVC.exe'")
  If colProcess.Count > 0 Then
    'Restart the computer if BstkSVC.exe is still running
    WshShell.Run "shutdown -r -t 0", 0, False
  End If
End If