[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
纯批处理版
以题干所列文件名为样本测试
  1. 20190511152311.032357965-CP14.dat
  2. 20190511152313.030170535-CP14.dat
  3. 20190511152315.030184055-CP14.dat
  4. 20190511152317.030193560-CP14.dat
  5. 20190511152319.030201595-CP14.dat
  6. 20190511152321.030213575-CP14.dat
  7. 20190511152323.030224565-CP14.dat
  8. 20190511152325.030236580-CP14.dat
  9. 20190511152327.030251605-CP14.dat
  10. 20190511152329.030265035-CP14.dat
  11. 20190511152331.030282525-CP14.dat
  12. 20190511152333.030282450-CP14.dat
  13. 20190511152335.030294435-CP15.dat
  14. 20190511152335.030294475-CP14.dat
  15. 20190511152335.030294495-CP16.dat
  16. 20190511152337.030309415-CP14.dat
  17. 20190511152337.030309435-CP16.dat
  18. 20190511152337.030309455-CP15.dat
复制代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "nFileCount=0"
  4. REM =====统计文件总数
  5. echo,Step 1 :
  6. for /f "tokens=*" %%i in ('dir /b *.dat') do (
  7. set /a "nFileCount+=1"
  8. )
  9. echo,统计文件总数为 : !nFileCount!
  10. echo,&echo,
  11. REM =====统计毫秒、微秒、纳秒数量级分布规律
  12. echo,Step 2 :
  13. call :_ShowTimeCount
  14. REM 显示统计结果
  15. echo,LEVEL    ms次数    us次数    ns次数
  16. echo,------------------------------------
  17. for /l %%i in (0 1 9) do (
  18. echo,%%i00-%%i99  !nMS%%i00%%i99!    !nUS%%i00%%i99!    !nNS%%i00%%i99!
  19. )
  20. echo,&echo,
  21. REM =====显示同一时刻不同网站纳秒差
  22. echo,Step 3 :
  23. for /l %%i in (1 1 !nMainCount!) do (
  24. call :_ShowTimeDiff %%i
  25. )
  26. pause
  27. goto :EOF
  28. :_ShowTimeCount
  29. (
  30. REM 变量初始化
  31. for /l %%i in (0 1 9) do (
  32. set "nMS%%i00%%i99=0"
  33. set "nUS%%i00%%i99=0"
  34. set "nNS%%i00%%i99=0"
  35. )
  36. REM for /l %%i in (0 1 9) do (
  37. REM echo,nMS%%i00%%i99=!nMS%%i00%%i99!
  38. REM echo,nUS%%i00%%i99=!nUS%%i00%%i99!
  39. REM echo,nNS%%i00%%i99=!nNS%%i00%%i99!
  40. REM )
  41. REM 定义查询字典
  42. set "strDict="
  43. REM 统计总时刻数
  44. set "nMainCount=0"
  45. for /f "tokens=1,2,3 delims=.-" %%i in ('dir /b *.dat') do (
  46. REM echo,当前处理信息为   : %%i.%%j-%%k.dat
  47. set "strMain=%%i"
  48. set "strS=%%j"
  49. set "nMS=!strS:~0,3!"
  50. REM echo,当前毫秒值为     : !nMS!
  51. for /l %%a in (0 1 9) do (
  52. if "!nMS:~0,1!" EQU "%%a" (
  53. set /a "nMS%%a00%%a99+=1"
  54. )
  55. )
  56. set "nUS=!strS:~3,3!"
  57. REM echo,当前微秒值为     : !nUS!
  58. for /l %%a in (0 1 9) do (
  59. if "!nUS:~0,1!" EQU "%%a" (
  60. set /a "nUS%%a00%%a99+=1"
  61. )
  62. )
  63. set "nNS=!strS:~6!"
  64. REM echo,当前纳秒值为     : !nNS!
  65. for /l %%a in (0 1 9) do (
  66. if "!nNS:~0,1!" EQU "%%a" (
  67. set /a "nNS%%a00%%a99+=1"
  68. )
  69. )
  70. REM 对同一秒内不同站点的纳秒值差进行统计
  71. REM echo,当前字典 : !strDict!
  72. echo,!strDict! | findstr "!strMain!" >nul 2>nul && (
  73. REM 有此时刻统计信息,更新网站数
  74. set /a "n!strMain!Count+=1"
  75. ) || (
  76. REM 无此时刻统计信息
  77. REM 更新时刻总数
  78. set /a "nMainCount+=1"
  79. REM 当前新时刻计数初始化
  80. set "n!strMain!Count=1"
  81. REM 更新字典
  82. set "strDict=!strDict!(!strMain!)"
  83. )
  84. REM 更新MAP
  85. call set "str!strMain!.%%n!strMain!Count%%.Name=%%k"
  86. call set "str!strMain!.%%n!strMain!Count%%.NS=!nNS!"
  87. REM echo,当前总时刻数 : nMainCount = !nMainCount!
  88. REM call echo,当前时刻总数 : n!strMain!Count = %%n!strMain!Count%%
  89. REM call call echo,当前分析站点 : str!strMain!.%%n!strMain!Count%%.Name = %%%%str!strMain!.%%n!strMain!Count%%.Name%%%%
  90. REM call call echo,当前分析纳秒 : str!strMain!.%%n!strMain!Count%%.NS = %%%%str!strMain!.%%n!strMain!Count%%.NS%%%%
  91. )
  92. for /l %%i in (0 1 9) do (
  93. set "nMS%%i00%%i99=000000!nMS%%i00%%i99!"
  94. set "nMS%%i00%%i99=!nMS%%i00%%i99:~-6!"
  95. set "nUS%%i00%%i99=000000!nUS%%i00%%i99!"
  96. set "nUS%%i00%%i99=!nUS%%i00%%i99:~-6!"
  97. set "nNS%%i00%%i99=000000!nNS%%i00%%i99!"
  98. set "nNS%%i00%%i99=!nNS%%i00%%i99:~-6!"
  99. )
  100. goto :EOF
  101. )
  102. :_ShowTimeDiff
  103. (
  104. for /f "tokens=%1 delims=()" %%a in ('echo,!strDict!') do (
  105. REM echo,当前处理时刻 %%a
  106. set "strTime=%%a"
  107. set "nTmpCount=0"
  108. call set "nTmpCount=%%n!strTime!Count%%"
  109. REM echo,共有网站记录数 : !nTmpCount!
  110. set /a "nMin=999"
  111. set /a "nMax=0"
  112. set /p=!strTime!    <nul
  113. for /l %%i in (1 1 !nTmpCount!) do (
  114. REM echo,第 %%i 个网站 :
  115. call set "strTmpName=%%str!strTime!.%%i.Name%%"
  116. REM echo,Name : !strTmpName!
  117. call set "strTmpNS=%%str!strTime!.%%i.NS%%"
  118. REM call echo,NS   : !strTmpNS!
  119. set /p=!strTmpName!:!strTmpNS!    <nul
  120. if !nMin! GEQ !strTmpNS! set "nMin=!strTmpNS!"
  121. if !nMax! LEQ !strTmpNS! set "nMax=!strTmpNS!"
  122. )
  123. set /a "nDiff=!nMax!-!nMin!"
  124. echo,Diff:!nDiff!
  125. )
  126. goto :EOF
  127. )
复制代码
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

返回列表