windows 批处理文件检查电源插头 Battery.PowerOnline returns 始终为 FALSE

windows batch file checking power plug with Battery.PowerOnline returns always FALSE

我对很多 windows 10 台平板电脑进行了关闭房间电源时的关机检查。现在我尝试更新一个查看dell 8.1 tablets,但是Battery.PowerOnline returns 总是false。有任何想法吗?

FOR /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryStatus              Get PowerOnline^,RemainingCapacity /Format:list ^| FIND "="') DO SET Battery.%%A
FOR /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryRuntime             Get EstimatedRuntime               /Format:list ^| FIND "="') DO SET Battery.%%A
FOR /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryFullChargedCapacity Get FullChargedCapacity            /Format:list ^| FIND "="') DO SET Battery.%%A

IF /I "%Battery.PowerOnline%"=="TRUE" (
    SET doShutDown=0
) ELSE (
    SET doShutDown=1
)

set Battery.%%A老实说不会设置任何东西,而且,你从未定义%Battery.PowerOnline%变量,所以它永远不会return为真。我们真的需要检查每个状态吗?只有你的三个命令中的最后一个 set 会保留变量值,所以宁可检查主要的 poweronline 值并从那里做一些事情。注意我是如何设置变量的:

@echo off
for /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryStatus Get PowerOnline /Format:list ^| FIND "PowerOnline"') DO SET "Battery=%%A" & goto :verify

:verify
if /I "%Battery%"=="PowerOnline=TRUE" (
    set doShutDown=0
) else (
    set doShutDown=1
)