Vbscript 如果条件不符合要求

Vbscript 如果条件不符合要求,vbscript,Vbscript,编写一个VB脚本来监视电池百分比。如果大于95,则拔下插头。如果

编写一个VB脚本来监视电池百分比。如果大于95,则拔下插头。如果<20,则插入充电器或休眠等。当电池电量低于20%时,充电器会弹出一个插头…虽然在10秒内系统已插入,但它会转到
else
part并休眠。它没有进入“系统不会休眠”部分

hibernate.bat
是一个用于休眠Windows7的简单批处理脚本。 代码是一个永无止境的
for
循环,其中do-while循环用于在shell脚本中复制“continue”。当电池电量达到20%时,插件充电器将有10秒的时间。如果充电,则必须转到下一个for循环迭代。未输入“如果充电”循环。为什么?

Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oServices = oLocator.ConnectServer(".","root\wmi")
Set oResults = oServices.ExecQuery("select * from batteryfullchargedcapacity")
For Each oResult In oResults
    iFull = oResult.FullChargedCapacity
Next

For i=1 To 10
    Do
        i=+2
        Set oResults = oServices.ExecQuery("select * from batterystatus")
        For Each oResult In oResults
            iRemaining = oResult.RemainingCapacity
            Charging = oResult.Charging
            Discharging = oResult.Discharging
        Next

        iPercent = ((iRemaining / iFull) * 100) Mod 100
        If Charging And (iPercent > 95) Then
            MsgBox "Unplug Charger. Battery is at " & iPercent & "%", vbInformation, "Battery monitor"
        ElseIf Discharging And (iPercent < 20) Then
            MsgBox "Plug-in Charger. Battery is at " & iPercent & "%", vbInformation, "Battery monitor"
            WScript.Sleep 10000 ' 10 sec
            If Charging Then
                CreateObject("WScript.Shell").Popup "System won't hibernate", 5, "Good News!!!"
                Exit Do
            Else
                Set shell = CreateObject("WScript.Shell")
                shell.CurrentDirectory = "C:\Users\abcd\Desktop"
                CreateObject("WScript.Shell").Popup "System will hibernate", 5, "Hmm..."
                shell.Run "hibernate.bat"
                Exit For
            End If
        End If
    Loop While False
Next
Set-oLocator=CreateObject(“WbemScripting.SWbemLocator”)
设置oServices=oLocator.ConnectServer(“.”,“root\wmi”)
Set-oResults=oServices.ExecQuery(“从电池容量中选择*)
对于oResults中的每个oResults
iFull=oResult.FullChargedCapacity
下一个
对于i=1到10
做
i=+2
Set-oResults=oServices.ExecQuery(“从batterystatus中选择*)
对于oResults中的每个oResults
iMaining=oResult.RemainingCapacity
充电=或结果充电
卸料=或结果卸料
下一个
iPercent=((iMaining/iFull)*100)模块100
如果充电和(iPercent>95),则
MsgBox“拔下充电器。电池位于”&iPercent&“%”,vbInformation,“电池监视器”
如果放电,则(iPercent<20)
MsgBox“插入式充电器。电池位于”&i电源和“%”,vbInformation,“电池监视器”
WScript.Sleep 10000'10秒
如果是收费的话
CreateObject(“WScript.Shell”)。弹出“系统不会休眠”,5,“好消息!!!”
退出Do
其他的
Set shell=CreateObject(“WScript.shell”)
shell.CurrentDirectory=“C:\Users\abcd\Desktop”
CreateObject(“WScript.Shell”)。弹出“系统将休眠”,5,“嗯…”
shell.Run“hibernate.bat”
退出
如果结束
如果结束
错误时循环
下一个
这是您的问题:

ElseIf Discharging And (iPercent < 20) Then
    ...
    If Charging Then
        ...
    Else
        ...
    End If
End If
然后像这样使用它们:

Do
    iPercent = ((GetRemainingCapacity / iFull) * 100) Mod 100
    If IsCharging And (iPercent > 95) Then
        ...
    ElseIf Not IsCharging And (iPercent < 20) Then
        ...
        If IsCharging Then
            ...
        Else
            ...
        End If
    End If
Loop While True
Do
iPercent=((GetRemainingCapacity/iFull)*100)模块100
如果放电且(iPercent>95),则
...
否则,如果不放电且(iPercent<20),则
...
如果是放电的话
...
其他的
...
如果结束
如果结束
在为真时循环

可能重复的扩口,作为重复关闭。
Do
    iPercent = ((GetRemainingCapacity / iFull) * 100) Mod 100
    If IsCharging And (iPercent > 95) Then
        ...
    ElseIf Not IsCharging And (iPercent < 20) Then
        ...
        If IsCharging Then
            ...
        Else
            ...
        End If
    End If
Loop While True