BATCH - Как получить только одну строку из многострочного вывода команды - PullRequest
0 голосов
/ 29 мая 2018

Значок «Батарея» в моей строке состояния не работает, и я использую пакетный скрипт Windows для проверки уровня заряда батареи.(Я не хочу исправления для значка.) Но вывод выглядит довольно уродливо, без пробелов и простого числа в следующей строке.

Итак, как я могу преобразовать

EstimatedChargeRemaining
83

до

Battery Level is at 83

(или что-либо в этом роде.)

PS: TheЯ использую команду WMIC PATH Win32_Battery Get EstimatedChargeRemaining
PPS: я также не против того, чтобы это было на другом языке (например, Python, VBS), если для вывода достаточно одного клика.Итак, как проверить уровень заряда батареи из командной строки

Ответы [ 3 ]

0 голосов
/ 29 мая 2018
for /f "tokens=* delims=" %%a in ('WMIC PATH Win32_Battery Get EstimatedChargeRemaining /format:value') do (
   for %%# in ("%%a") do set "%%#"
)

echo Battery Level is at %EstimatedChargeRemaining%
0 голосов
/ 29 мая 2018

Следующее работает для меня, и является модификацией ответа @ npocmaka (Спасибо, npocmaka).

FOR /F "Tokens=1,* Delims==" %%A in (
    'wmic PATH Win32_Battery get EstimatedChargeRemaining  /Format:list ^| FINDSTR "[0-9]"'
)DO (echo Battery Level is at %%B)

Что я изменил:
FINDSTR Преобразует выходные данные из Unicode в ANSI для анализа по FOR /F

Спасибо @Rakesh за попытку.

0 голосов
/ 29 мая 2018

Попробуйте использовать модуль subprocess & re.

Пример:

import re
import subprocess
s = subprocess.check_output("WMIC PATH Win32_Battery Get EstimatedChargeRemaining")
print("Battery Level is at {0}".format(re.findall("\d+", s)[0]))

Выход:

Battery Level is at 83
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...