Windows 如何批量获取电池百分比?

Windows 如何批量获取电池百分比?,windows,batch-file,cmd,batterylevel,Windows,Batch File,Cmd,Batterylevel,所以,我只想知道如何批量获得电池百分比。 我认为如果格式是这样的话会很好: :forever get-battery if "%battery%"=="100%" goto reached100 goto forever :reached100 echo Your battery has finished charging! goto forever 使用WMIC :: Variables to translate the returned BatteryStatus integer t

所以,我只想知道如何批量获得电池百分比。
我认为如果格式是这样的话会很好:

:forever
get-battery
if "%battery%"=="100%" goto reached100
goto forever

:reached100  
echo Your battery has finished charging!
goto forever
使用WMIC

:: Variables to translate the returned BatteryStatus integer to a descriptive text
SET BatteryStatus.1=discharging
SET BatteryStatus.2=The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.
SET BatteryStatus.3=fully charged
SET BatteryStatus.4=low
SET BatteryStatus.5=critical
SET BatteryStatus.6=charging
SET BatteryStatus.7=charging and high
SET BatteryStatus.8=charging and low
SET BatteryStatus.9=charging and critical
SET BatteryStatus.10=UNDEFINED
SET BatteryStatus.11=partially charged

:: Read the battery status
FOR /F "tokens=*" %%A IN ('WMIC Path Win32_Battery Get BatteryStatus /Format:List ^| FIND "="') DO SET %%A

:: Check the battery status, and display a warning message if running on battery power
IF NOT "%BatteryStatus%"=="2" (
    > "%~dpn0.vbs" ECHO MsgBox vbLf ^& "The laptop is currently running on its battery." ^& vbLf ^& vbLf ^& "The battery is !BatteryStatus.%BatteryStatus%!." ^& vbLf ^& vbLf ^& "Connect the laptop to the mains voltage if possible." ^& vbLf ^& " "^, vbWarning^, "Battery Warning"
    CSCRIPT //NoLogo "%~dpn0.vbs"
    DEL "%~dpn0.vbs"
)
使用WMIC检查位于

的完整脚本

:: Variables to translate the returned BatteryStatus integer to a descriptive text
SET BatteryStatus.1=discharging
SET BatteryStatus.2=The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.
SET BatteryStatus.3=fully charged
SET BatteryStatus.4=low
SET BatteryStatus.5=critical
SET BatteryStatus.6=charging
SET BatteryStatus.7=charging and high
SET BatteryStatus.8=charging and low
SET BatteryStatus.9=charging and critical
SET BatteryStatus.10=UNDEFINED
SET BatteryStatus.11=partially charged

:: Read the battery status
FOR /F "tokens=*" %%A IN ('WMIC Path Win32_Battery Get BatteryStatus /Format:List ^| FIND "="') DO SET %%A

:: Check the battery status, and display a warning message if running on battery power
IF NOT "%BatteryStatus%"=="2" (
    > "%~dpn0.vbs" ECHO MsgBox vbLf ^& "The laptop is currently running on its battery." ^& vbLf ^& vbLf ^& "The battery is !BatteryStatus.%BatteryStatus%!." ^& vbLf ^& vbLf ^& "Connect the laptop to the mains voltage if possible." ^& vbLf ^& " "^, vbWarning^, "Battery Warning"
    CSCRIPT //NoLogo "%~dpn0.vbs"
    DEL "%~dpn0.vbs"
)

检查位于

的完整脚本。您可以通过Wmic命令进行检查

编辑:

:forever
Goto get-battery
Echo "%Ba%"
:Next
if "%Ba%"=="100" Goto Fin
goto forever

:Fin
echo Your battery has finished charging!
pause>nul
exit

:get-battery
for /f "tokens=2 delims==" %%E in ('wmic path Win32_Battery get EstimatedChargeRemaining /value') do (set "Ba=%%E")
Goto Next

您可以通过Wmic命令进行检查

编辑:

:forever
Goto get-battery
Echo "%Ba%"
:Next
if "%Ba%"=="100" Goto Fin
goto forever

:Fin
echo Your battery has finished charging!
pause>nul
exit

:get-battery
for /f "tokens=2 delims==" %%E in ('wmic path Win32_Battery get EstimatedChargeRemaining /value') do (set "Ba=%%E")
Goto Next

科学家的答案应该是正确的

当然,没有法律禁止批量调用powershell

powershell -command "(Get-WmiObject Win32_Battery).EstimatedChargeRemaining"
56

科学家的答案应该是正确的

当然,没有法律禁止批量调用powershell

powershell -command "(Get-WmiObject Win32_Battery).EstimatedChargeRemaining"
56

我永远无法理解为什么人们喜欢用一种不同寻常的方式写作,这种方式给人一种奇怪而神秘的感觉,常常需要解释,而不是使用全世界普遍使用的方形braquets标准方式:
SET BatteryStatus[1]=放电
;请参阅:。我要百分比。例如:
100
(100%)或
2
(2%),这样我就可以在“IF”命令中使用它。不要使用
BatteryStatus
,也可以尝试使用
EstimatedChargerMaining
,我对此感到非常困惑。我永远不会理解人们为什么喜欢以不寻常的方式写作,这给了他们一种奇怪而神秘的表情,通常需要解释,而不是使用全世界普遍使用的方形braquets标准方式:
SET BatteryStatus[1]=放电
;请参阅:。我要百分比。例如:
100
(100%)或
2
(2%),因此我可以在“IF”命令中使用它。代替
BatteryStatus
,尝试使用
EstimatedChargerMaining
,我对此感到非常困惑。查看我的新更改。使用Powershell 6及更高版本(即Powershell Core),您可以使用
(获取CimInstance Win32_电池).EstimatedChargerMaining
。有关使用Powershell 6及更高版本(即Powershell Core)获取CimInstance at的更多详细信息,您可以使用
(获取CimInstance Win32_电池)。EstimatedChargerMaining
。有关获取CimInstance的更多详细信息,请访问