![Board logo](images/default/logo.gif)
标题: [文本处理] 如何统计指定时间段内数据 [打印本页]
作者: snowsilent 时间: 2009-8-24 15:01 标题: 如何统计指定时间段内数据
文本文件result.txt中记录了这样一些信息,如何统计某一时间段内的信息个数,如2008-01-01 - 2009-01-02,等待高手指教
[2007-12-05 17:53:53] STATUS
[2008-01-01 18:43:09] STATUS
。。。
[2009-01-02 18:43:09] STATUS
[2009-01-03 09:11:15] STATUS
作者: namejm 时间: 2009-8-24 15:17
演示代码如下(起止日期都统计在内):- @echo off
- set time1=2008-01-01
- set time2=2009-01-02
- set num=0
- for /f "tokens=1*" %%i in (result.txt) do (
- if "%%i" geq "[%time1%" (
- if "%%i" leq "[%time2%" set /a num+=1
- )
- )
- echo %time1%~%time2%的信息条数为:%num%
- pause
复制代码
作者: Lumiere 时间: 2009-8-24 22:24
- @echo off
- for /f %%a in ('findstr "2008-01-01" result.txt') do set /a n+=1
- set /a n-=1
- echo 之间的信息条数是%n%
- pause
复制代码
作者: zqz0012005 时间: 2009-8-24 23:15
如果时间和数据都在一行内,直接find就行了- find /c "2008-01-01" <result.txt
复制代码
作者: Lumiere 时间: 2009-8-25 00:04 标题: 回复 4楼 的帖子
find要减一才对,第一行不能算
作者: zqz0012005 时间: 2009-8-25 00:12 标题: 回复 5楼 的帖子
为何不能算?否则岂不是每天的记录都会少一条?
作者: namejm 时间: 2009-8-25 00:41
楼主要统计的是某个时间段的条数啊,不是某一天的,各位没看错吧。
作者: Lumiere 时间: 2009-8-25 08:50 标题: 回复 6楼 的帖子
既然说的是之间,那么第一条当然不能算啊。比如说1和10之间的所有整数,你不能把1也算了吧?
作者: Lumiere 时间: 2009-8-25 08:52 标题: 回复 7楼 的帖子
我觉得可能。楼主在顶楼的陈述感觉像是要找出同一天内的信息条数。从文本内容看似乎是那样,不确定楼主意思到底是什么。
作者: snowsilent 时间: 2009-8-25 10:06
2楼的代码很好用,就是这个意思。可能没把问题说清楚造成了困惑,不是找同一天的信息条数,是找某一日期段内的数据,和日期后的具体时间没关系。
作者: Lumiere 时间: 2009-8-25 12:50 标题: 回复 10楼 的帖子
看吧,你开始写的是某一时间段内的,而不是某一日期段内的,这样人家结合你的举例还有文本内容就误解了。所以提问最好陈述清楚。2楼4楼都是高手牛逼人,他们的代码对于你这样简单的问题当然是很好用啦,要不还做什么管理员版主啊,我这把杀鸡刀就够了……呵呵
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |