求一个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