[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 如何统计指定时间段内数据

文本文件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

  演示代码如下(起止日期都统计在内):
  1. @echo off
  2. set time1=2008-01-01
  3. set time2=2009-01-02
  4. set num=0
  5. for /f "tokens=1*" %%i in (result.txt) do (
  6.     if "%%i" geq "[%time1%" (
  7.         if "%%i" leq "[%time2%" set /a num+=1
  8.     )
  9. )
  10. echo %time1%~%time2%的信息条数为:%num%
  11. pause
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  1. @echo off
  2. for /f %%a in ('findstr "2008-01-01" result.txt') do set /a n+=1
  3. set /a n-=1
  4. echo 之间的信息条数是%n%
  5. pause
复制代码
Still with wax

TOP

如果时间和数据都在一行内,直接find就行了
  1. find /c "2008-01-01" <result.txt
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 4楼 的帖子

find要减一才对,第一行不能算
Still with wax

TOP

回复 5楼 的帖子

为何不能算?否则岂不是每天的记录都会少一条?
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  楼主要统计的是某个时间段的条数啊,不是某一天的,各位没看错吧。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 6楼 的帖子

既然说的是之间,那么第一条当然不能算啊。比如说1和10之间的所有整数,你不能把1也算了吧?
Still with wax

TOP

回复 7楼 的帖子

我觉得可能。楼主在顶楼的陈述感觉像是要找出同一天内的信息条数。从文本内容看似乎是那样,不确定楼主意思到底是什么。
Still with wax

TOP

2楼的代码很好用,就是这个意思。可能没把问题说清楚造成了困惑,不是找同一天的信息条数,是找某一日期段内的数据,和日期后的具体时间没关系。

TOP

回复 10楼 的帖子

看吧,你开始写的是某一时间段内的,而不是某一日期段内的,这样人家结合你的举例还有文本内容就误解了。所以提问最好陈述清楚。2楼4楼都是高手牛逼人,他们的代码对于你这样简单的问题当然是很好用啦,要不还做什么管理员版主啊,我这把杀鸡刀就够了……呵呵
Still with wax

TOP

返回列表