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
)
我对很多 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
)