批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[数值计算] [已解决]批处理如何实现角度数据处理?

本帖最后由 aliny2003 于 2021-8-25 06:17 编辑

w.txt
角度数据文件如下:
198
188
163
156
076
011
058
029
053
341
336
304
306
301
283
299
291
293
301
301
298
282
037
323
012
187
PPC
027
010
047
044
001
355
323
310
298
309
291
295
319
289
300
280
293
271
275
294
285
268
335
052
067
143
168
300
355
312
272
298
284
317
PPC
170
PPC
133
179
291
310
317
PPC
035
129

1、角度范围0-90,记为了E(东),并统计个数
2、角度范围91-180,记为了S(南),并统计个数
3、角度范围181-270,记为了S(西),并统计个数
4、角度范围271-359,记为了S(西),并统计个数
4、PPC为了静风,统计出现的个数

新人,多多指教。

  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

回复 2# qixiaobin0715


    w.txt
角度数据文件如下:
198
188
163
156
076
011
058
029
053
341
336
304
306
301
283
299
291
293
301
301
298
282
037
323
012
187
PPC
027
010
047
044
001
355
323
310
298
309
291
295
319
289
300
280
293
271
275
294
285
268
335
052
067
143
168
300
355
312
272
298
284
317
PPC
170
PPC
133
179
291
310
317
PPC
035
129

再细化点:
1、角度范围348-10,记为北,并统计个数
2、角度范围11-33,记为北东北,并统计个数
3、角度范围34-56,记为东北,并统计个数
4、角度范围57-78,记为东东北,并统计个数
5、角度范围79-101,记为东,并统计个数
6、角度范围102-123,记为东东南,并统计个数
7、角度范围124-146,记为东南,并统计个数
8、角度范围147-168,记为南东南,并统计个数
9、角度范围169-191,记为南,并统计个数
10、角度范围192-213,记为南西南,并统计个数
11、角度范围214-236,记为西南,并统计个数
12、角度范围237-258,记为西西南,并统计个数
13、角度范围259-281,记为西,并统计个数
14、角度范围282-303,记为西西北,并统计个数
15、角度范围304-326,记为西北,并统计个数
16、角度范围327-347,记为北西北,并统计个数
17、PPC为了静风,统计出现的个数

TOP

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

TOP

回复 4# qixiaobin0715


    @echo off
chcp 65001
setlocal enabledelayedexpansion
for /f %%a in (K:\feng\mm.txt) do (
    if %%a==PPC (
        set /a p+=1
    ) else (
        if %%a gtr 11 if %%a lss 33 (
            set /a n1+=1
        ) else %%a gtr 34 if %%a lss 56 (
            set /a n2+=1
        ) else %%a gtr 57 if %%a lss 78 (
            set /a n3+=1
        ) else %%a gtr 79 if %%a lss 101 (
            set /a n4+=1
        ) else %%a gtr 102 if %%a lss 123 (
            set /a n5+=1
        ) else %%a gtr 124 if %%a lss 146 (
            set /a n6+=1
        ) else %%a gtr 147 if %%a lss 168 (
            set /a n7+=1
        ) else %%a gtr 169 if %%a lss 192 (
            set /a n8+=1
        ) else %%a gtr 193 if %%a lss 213 (
            set /a n9+=1
        ) else %%a gtr 214 if %%a lss 236 (
            set /a n10+=1
        ) else %%a gtr 237 if %%a lss 258 (
            set /a n11+=1
        ) else %%a gtr 259 if %%a lss 281 (
            set /a n12+=1
        ) else %%a gtr 282 if %%a lss 303 (
            set /a n13+=1
        ) else %%a gtr 304 if %%a lss 326 (
            set /a n14+=1
        ) else %%a gtr 327 if %%a lss 348 (
            set /a n15+=1
        ) else (
            set /a n16+=1
        )
    )
)
echo 6月份北东北总共: !n1!
echo 6月份东北总共:!n2!
echo 6月份东东北总共:!n3!
echo 6月份东总共:!n4!
echo 6月份东东南总共:!n5!
echo 6月份东南总共:!n6!
echo 6月份南东南总共:!n7!
echo 6月份南总共: !n8!
echo 6月份南西南总共: !n9!
echo 6月份西南总共: !n10!
echo 6月份西西南总共: !n11!
echo 6月份西总共: !n12!
echo 6月份西西北总共: !n13!
echo 6月份西北总共:!n14!
echo 6月份北西北总共: !n15!
echo 6月份北总共:!n16!
echo 6月份静风总共 !p!个
pause

TOP

运行会报错误,
Active code page:65001
else was unexpected at this time.

TOP

回复 6# aliny2003


    请再观察一下2楼的代码,你的好多个else后面少了if
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。

TOP

@echo off
chcp 65001
setlocal enabledelayedexpansion
for /f %%a in (K:\feng\mm.txt) do (
    if %%a==PPC (
        set /a p+=1
    ) else (
        if %%a geq 11 if %%a leq 33 (
            set /a n1+=1
        ) else if %%a geq 34 if %%a leq 56 (
            set /a n2+=1
        ) else if %%a geq 57 if %%a leq 78 (
            set /a n3+=1
        ) else if %%a geq 79 if %%a leq 101 (
            set /a n4+=1
        ) else if %%a geq 102 if %%a leq 123 (
            set /a n5+=1
        ) else if %%a geq 124 if %%a leq 146 (
            set /a n6+=1
        ) else if %%a geq 147 if %%a leq 168 (
            set /a n7+=1
        ) else if %%a geq 169 if %%a leq 192 (
            set /a n8+=1
        ) else if %%a geq 193 if %%a leq 213 (
            set /a n9+=1
        ) else if %%a geq 214 if %%a leq 236 (
            set /a n10+=1
        ) else if %%a geq 237 if %%a leq 258 (
            set /a n11+=1
        ) else if %%a geq 259 if %%a leq 281 (
            set /a n12+=1
        ) else if %%a geq 282 if %%a leq 303 (
            set /a n13+=1
        ) else if %%a geq 304 if %%a leq 326 (
            set /a n14+=1
        ) else if %%a geq 327 if %%a leq 348 (
            set /a n15+=1
        ) else (
            set /a n16+=1
        )
    )
)


echo 6月份北东北总共: !n1!
echo 6月份东北总共:!n2!
echo 6月份东东北总共:!n3!
echo 6月份东总共:!n4!
echo 6月份东东南总共:!n5!
echo 6月份东南总共:!n6!
echo 6月份南东南总共:!n7!
echo 6月份南总共: !n8!
echo 6月份南西南总共: !n9!
echo 6月份西南总共: !n10!
echo 6月份西西南总共: !n11!
echo 6月份西总共: !n12!
echo 6月份西西北总共: !n13!
echo 6月份西北总共:!n14!
echo 6月份北西北总共: !n15!
echo 6月份北总共:!n16!
echo 6月份静风总共 !p!个
pause

TOP

改了,但是算出来的风统计数据有误。不知道哪里写错了。请高手再指点下。。

TOP

回复 7# Batcher


    统计的数据不对,不知道哪里写错了

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

回复 12# qixiaobin0715


079
099
088
091
093

@echo off
chcp 65001
setlocal enabledelayedexpansion
for /f %%a in (G:\m9.txt) do (
    if %%a==PPC (
        set /a p+=1
    ) else (
        if %%a geq 0 if %%a leq 10 (
            set /a n16+=1
        )else if %%a geq 11 if %%a leq 33 (
            set /a n1+=1
        ) else if %%a geq 34 if %%a leq 56 (
            set /a n2+=1
        ) else if %%a geq 57 if %%a leq 78 (
            set /a n3+=1
        ) else if %%a geq 79 if %%a leq 101 (
            set /a n4+=1
        ) else if %%a geq 102 if %%a leq 123 (
            set /a n5+=1
        ) else if %%a geq 124 if %%a leq 146 (
            set /a n6+=1
        ) else if %%a geq 147 if %%a leq 168 (
            set /a n7+=1
        ) else if %%a geq 169 if %%a leq 192 (
            set /a n8+=1
        ) else if %%a geq 193 if %%a leq 213 (
            set /a n9+=1
        ) else if %%a geq 214 if %%a leq 236 (
            set /a n10+=1
        ) else if %%a geq 237 if %%a leq 258 (
            set /a n11+=1
        ) else if %%a geq 259 if %%a leq 281 (
            set /a n12+=1
        ) else if %%a geq 282 if %%a leq 303 (
            set /a n13+=1
        ) else if %%a geq 304 if %%a leq 326 (
            set /a n14+=1
        ) else if %%a geq 327 if %%a leq 348 (
            set /a n15+=1
        ) else (
            set /a n16+=1
        )
    )
)


echo 1月份北东北总共: !n1!
echo 1月份东北总共:!n2!
echo 1月份东东北总共:!n3!
echo 1月份东总共:!n4!
echo 1月份东东南总共:!n5!
echo 1月份东南总共:!n6!
echo 1月份南东南总共:!n7!
echo 1月份南总共: !n8!
echo 1月份南西南总共: !n9!
echo 1月份西南总共: !n10!
echo 1月份西西南总共: !n11!
echo 1月份西总共: !n12!
echo 1月份西西北总共: !n13!
echo 1月份西北总共:!n14!
echo 1月份北西北总共: !n15!
echo 1月份北总共:!n16!
echo 1月份静风总共 !p!个
pause


为什么统计成“北”n16,不应该是“东”n4

TOP

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

TOP

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

TOP

返回列表