[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in (w.txt) do (
  4.     if %%a==PPC (
  5.         set /a p+=1
  6.     ) else (
  7.         if %%a lss 91 (
  8.             set /a n1+=1
  9.         ) else if %%a lss 181 (
  10.             set /a n2+=1
  11.         ) else if %%a lss 271 (
  12.             set /a n3+=1
  13.         ) else (
  14.             set /a n4+=1
  15.         )
  16.     )
  17. )
  18. echo,E(东):共有!n1!个
  19. echo,S(南):共有!n2!个
  20. echo,W(西):共有!n3!个
  21. echo,N(北):共有!n4!个
  22. echo,静风:共有!p!个
  23. pause
复制代码

TOP

回复 3# aliny2003
就是多几个else if和echo而已,可参照楼上代码自行修改。

TOP

回复 10# aliny2003
最后一个else有问题。
你用的2个if判断范围属于简写,写法不规范。正常写法应当是:
if ... (
if ...
)
但是比较麻烦,不熟悉的话尽量不要用连续if的写法。北风统计错误对吧:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in (K:\feng\mm.txt) do (
  4.     if %%a==PPC (
  5.         set /a p+=1
  6.     ) else (
  7.         if %%a lss 11 (
  8.             set /a n1+=1
  9.         ) else if %%a lss 34 (
  10.             set /a n2+=1
  11.         ) else if %%a lss 57 (
  12.             set /a n3+=1
  13.         ) else if %%a lss 79 (
  14.             set /a n4+=1
  15.         ) else if %%a lss 102 (
  16.             set /a n5+=1
  17.         ) else if %%a lss 124 (
  18.             set /a n6+=1
  19.         ) else if %%a lss 147 (
  20.             set /a n7+=1
  21.         ) else if %%a lss 169 (
  22.             set /a n8+=1
  23.         ) else if %%a lss 193 (
  24.             set /a n9+=1
  25.         ) else if %%a lss 214 (
  26.             set /a n10+=1
  27.         ) else if %%a lss 237 (
  28.             set /a n11+=1
  29.         ) else if %%a lss 259 (
  30.             set /a n12+=1
  31.         ) else if %%a lss 282 (
  32.             set /a n13+=1
  33.         ) else if %%a lss 304 (
  34.             set /a n14+=1
  35.         ) else if %%a lss 327 (
  36.             set /a n15+=1
  37.         ) else if %%a lss 348 (
  38.             set /a n16+=1
  39.         ) else (
  40.             set /a n1+=1
  41.         )
  42.     )
  43. )
  44. echo 6月份北总共:!n1!
  45. echo 6月份北东北总共: !n2!
  46. echo 6月份东北总共:!n3!
  47. echo 6月份东东北总共:!n4!
  48. echo 6月份东总共:!n5!
  49. echo 6月份东东南总共:!n6!
  50. echo 6月份东南总共:!n7!
  51. echo 6月份南东南总共:!n8!
  52. echo 6月份南总共: !n9!
  53. echo 6月份南西南总共: !n10!
  54. echo 6月份西南总共: !n11!
  55. echo 6月份西西南总共: !n12!
  56. echo 6月份西总共: !n13!
  57. echo 6月份西西北总共: !n14!
  58. echo 6月份西北总共:!n15!
  59. echo 6月份北西北总共: !n16!
  60. echo 6月份静风总共 !p!个
  61. pause
复制代码

TOP

回复 10# aliny2003
再详细说一下你错在那里,取代码片段:
  1. if %%a geq 327 if %%a leq 348 (
  2.     set /a n15+=1
  3. ) else (
  4.     set /a n16+=1
  5. )
复制代码
相当于:
  1. if %%a gep 327 (
  2.     if %%a leq 348 (
  3.         set /a n15+=1
  4.     ) else (
  5.         set /a n16+=1
  6.     )
  7. )
复制代码
变量!n16!只取到了大于348的个数,0-10的数值未取到。

TOP

回复 13# aliny2003
改一下for循环试试:
for /f "tokens=* delims=0" %%a in (G:\m9.txt) do (

TOP

回复 13# aliny2003
批处理将开头为0的当做8进制数据。所以要去掉数据开头的0,我疏忽了。

TOP

返回列表