BATCH - 如何从多行命令输出中只获取一行
BATCH - How to get only a single line from a multi-line command output
我的状态栏中的“电池”图标不起作用,我使用 Windows 批处理脚本来检查电池电量。 (我不想修复图标。)但是,输出有点难看,下一行没有空格和纯数字。
那么,我该如何转换
EstimatedChargeRemaining
83
到
Battery Level is at 83
(或类似的东西。)
P.S:我使用的命令是WMIC PATH Win32_Battery Get EstimatedChargeRemaining
尝试使用 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
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%
以下对我有用,是对 @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
解析
我的状态栏中的“电池”图标不起作用,我使用 Windows 批处理脚本来检查电池电量。 (我不想修复图标。)但是,输出有点难看,下一行没有空格和纯数字。
那么,我该如何转换
EstimatedChargeRemaining
83
到
Battery Level is at 83
(或类似的东西。)
P.S:我使用的命令是WMIC PATH Win32_Battery Get EstimatedChargeRemaining
尝试使用 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
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%
以下对我有用,是对 @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