Если вы не хотите использовать внешние инструменты, вы можете использовать мощность (каламбур) запросов WMI и событий WMI.
Простой запрос для запуска из командной строки:
wmic path win32_battery get EstimatedChargeRemaining
даст вам примерный заряд. Теперь, чтобы получить повторные показания, вы можете просто поместить его в синхронизированный цикл, но есть лучший (или более интересный) способ: зарегистрировать событие батареи и обработчик для него - здесь это делается в Powershell (запустите Powershell и вставьте /exec эти две команды):
$action={get-wmiobject -computername localhost -Query "Select * from Win32_Battery"|% {write-host battery charge: ($_.EstimatedChargeRemaining) time: $(get-date)}}
Register-WMIEvent -query "SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_Battery'" -messageData "battery charge" -sourceIdentifier "battery" -action $action
Это будет выводить строку на вашу консоль Powershell каждый раз, когда происходит событие. Вот вывод с моего ноутбука:
заряд батареи: 67 раз: 2014-12-11 17:59:53
заряд батареи: 68 раз: 2014-12-11 18:00:23
заряд батареи: 69 время: 2014-12-11 18:01:23
заряд батареи: 70 раз: 2014-12-11 18:01:53
заряд батареи: 71 раз: 2014-12-11 18:02:53
заряд батареи: 72 раз: 2014-12-11 18:03:23
заряд батареи: 73 раз: 2014-12-11 18:04:23
заряд батареи: 74 время: 2014-12-11 18:05:14
заряд батареи: 75 раз: 2014-12-11 18:06:04
заряд батареи: 76 время: 2014-12-11 18:06:44
Мое простое действие - просто консольное сообщение, но вы, конечно, можете делать все, что захотите - например, записать его в файл
(примечание: я думаю, что счетчик WMI равен 99, который отображается как 100%/ полный в строке состояния - так что он находится на 1% «позади» дисплея)