如何使用Batch脚本逐行搜索关键词提取iPerf的SUM receiver行数据
Batch脚本匹配iPerf SUM接收端速率的稳定实现方案
当然支持,通过for /F逐行处理+findstr关键词匹配的方案,完全不需要依赖固定行号,抗iPerf输出格式变动的能力强很多。
方案1:保留原rawdata.txt临时文件逻辑
@echo off setlocal enableextensions enabledelayedexpansion iperf3 -c iperf.scottlinux.com -i 1 -t 15 -P 10 -p 5201 -R>>rawdata.txt 2>&1 :: 匹配同时包含[SUM]和receiver的行,提取速率字段 for /F "tokens=6,7" %%a in ('findstr /r /c:"\[SUM\].*receiver" rawdata.txt') do ( echo Bitrate [DL]: %%a %%b>>result.txt ) pause exit
方案2:省略临时文件,直接管道处理输出
可以不写rawdata.txt,直接把iperf的输出传给findstr过滤,注意for语句内的重定向、管道符号需要加^转义:
@echo off setlocal enableextensions enabledelayedexpansion for /F "tokens=6,7" %%a in ('iperf3 -c iperf.scottlinux.com -i 1 -t 15 -P 10 -p 5201 -R 2^>^&1 ^| findstr /r /c:"\[SUM\].*receiver"') do ( echo Bitrate [DL]: %%a %%b>>result.txt ) pause exit
关键逻辑说明
findstr /r开启正则匹配模式,\[SUM\].*receiver规则表示匹配行中先出现[SUM]、后续任意位置出现receiver的行,完全符合你的定位需求,只要两个关键词在同一行,不管输出顺序怎么变都能匹配到for /F默认按空白符分割字段,第6、7位就是你需要的速率数值和单位,和你原逻辑的字段提取规则一致,不用调整后续处理逻辑
内容的提问来源于stack exchange,提问作者LaoDa581
相关产品推荐
相关产品推荐

