批处理--从多个文档中统计某个字符串出现次数。

 window机器每天会在一个文件夹中生成多个数据文件,文件命名包含当前时间,如
test.2012-12-14 01.log
test.2012-12-14 02.log

01意思是凌晨一点到两点这个时间段产生的日志,文件名还有空格,这个在windows上处理很蛋疼,后面有介绍

每天都要统计文件中success出现的次数

之前的统计都是手工去完成的,而且不只一个机器在跑这个。

思路:

1、将当天的日志取出放到一个文件夹中。

2、遍历文件夹,读取每个文件,匹配success,统计

3、将结束写入txt中,上传到一个机器上,以为多台机器,所以会有多个这样的文件。

4、将所有机器上面获取到的数据汇总。

5、定时任务每天23:59分跑脚本

  
  
  
  
  1. @echo off 
  2.  
  3. ::将文件夹中当天数据移动到另一个文件夹中 
  4.  
  5. set d=%date:~0,4%-%date:~5,2%-%date:~8,2%  
  6. echo %d% 
  7.     
  8.     for /r "D:\test" %%a in (*"%d%"*) do ( 
  9.  
  10.     echo %%a 
  11.         
  12.     copy /y "%%a" C:\count 
  13.      
  14.  
  15. ::批处理停4秒
  16. ping -n 4 127.0>nul 
  17.  
  18.  
  19.  ::去掉文件名中的空格,如果文件名没有空格可以省下下面这一步,所以命名要规范点啊。
  20. FOR /F "TOKENS=1-2 DELIMS= " %%I IN ('DIR C:\count /S/B *.log') DO ( 
  21. REN "%%I %%J" "%%~NI%%~J") 
  22.  
  23.  
  24. ping -n 4 127.0>nul 
  25.  
  26.  
  27.  
  28.  
  29.  
  30. ::统计 
  31.  
  32.  
  33. echo %date:~0,4%-%date:~5,2%-%date:~8,2%>count04.txt 
  34.  
  35. ::延迟变量 这样才能在循环中获取到t的值,不能只能取最终结果
  36. setlocal enabledelayedexpansion 
  37. set a=0 
  38.     for /r "C:\count" %%a in (*.log) do ( 
  39.         for /f delims^= %%c in (%%a) do ( 
  40.             for %%d in (%%c) do ( 
  41.                 if %%d*==success* set /a t+=1 
  42.  
  43.             ) 
  44.         ) 
  45. set /a b=!t!-!a! 
  46. echo %%a success !b!>>count04.txt 
  47. set a=!t! 
  48. echo success %t%>>count04.txt 
  49.  
  50. echo %date:~0,4%-%date:~5,2%-%date:~8,2%>>log.txt 
  51.  
  52. ping -n 2 127.0>nul 
  53.  
  54.  
  55.  
  56. ::删除文件 
  57.  
  58. del C:\count\*.log 
  1.  ::上传文件到FTP上
  2. echo open 192.168.*.*>ftptmp 
  3. ::用户名,密码
  4. echo user>>ftptmp 
  5. echo passwd>>ftptmp 
  6. echo cd home>>ftptmp 
  7. echo delete count04.txt>>ftptmp 
  8. echo lcd C:\test>>ftptmp 
  9.  
  10. echo prompt>>ftptmp 
  11.  
  12. echo put count04.txt>>ftptmp 
  13.  
  14. echo bye>>ftptmp 
  15. ftp -s:ftptmp 
  16. del ftptmp 

这样就可以统计出数据了。

之后的处理就相对比较简陋了,在自己的机器上写一个shell将文件所有取下来,cat合并成一个文件。
 

你可能感兴趣的:(字符串)