是否可以通过使用键数字数组来拆分字符串?

时间:2016-10-18 13:06:22

标签: batch-file

我有一个包含像这样的数据的文本文件

response_list { time_range_stat { start_time_usecs: 1476763290000000 sampling_interval_secs: 30 value_list: 0 value_list: 1000000 value_list: 1000000 value_list: 205759 value_list: 139172. . . } }

我想获取 value_list键的值,并使用批处理脚本查找平均值。

可以这样做吗?

如果可能,请告诉我。

1 个答案:

答案 0 :(得分:2)

有足够的啤酒可以做任何事情。我建议你read about string manipulation。将来,您还应该发布代码,证明您已尝试自行解决问题。

目前,希望以下脚本足以让您入门。请注意,字符串操作要求数据与您上面的格式相匹配。如果确实没有省略号标示数据的结尾,您可能希望在第10行将. . .替换为}

另请注意,批量数学仅限于32位有符号整数。如果合并的所有value_list值的总值超过2147483647,则您将获得错误的值。可能更喜欢不同的脚本语言。

祝你好运!

@echo off & setlocal

rem // populate %data% variable
set /P "data=" <"text file that contains the data.txt"

rem // strip everything prior to the first value_list
set "data=%data:* value_list: =%"

rem // strip everything after the ellipses.
set data=%data:. . .=&rem;%

rem // init counters
set /a values=0, total=0

rem // replace "value_list:" with a delimiter that can be split by "for"
for %%I in (%data: value_list: =;%) do set /a values += 1, total += %%I

rem // average values.  Note: Batch math rounds the result to the nearest integer.
set /a avg = total / values

rem // output result
echo average: %avg%