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

[文本处理] [讨论]批处理统计一行数字字符串中每个数字出现的个数

本帖最后由 pcl_test 于 2016-7-11 22:20 编辑

比如这个数字
4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

我的错误代码

我的代码为
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set var=4540056587212124089654213134156749879456431215453535542124748643515348687893513215643541246
  4. set num=0
  5. for /l %%a in (1 1 100) do ( set var1=!var:~0,1!
  6. set var=!var:~1!
  7. set /a num+=1
  8. call :tongji
  9. if "!var!"="" goto :shuchu
  10. )
  11. :tongji
  12. if ( !var1!==0 set /a num0+=1
  13. if (!var1!==1 set /a num1+=1
  14. if (!var1!==2 set /a num2+=1
  15. if (!var1!==3 set /a num3+=1
  16. if (!var1!==4 set /a num4+=1
  17. if (!var1!==5 set /a num5+=1
  18. if (!var1!==6 set /a num6+=1
  19. if (!var1!==7 set /a num7+=1
  20. if (!var1!==8 set /a num8+=1
  21. if (!var1!==9 set /a num9+=1
  22. )
  23. )
  24. )
  25. )
  26. )
  27. )
  28. )
  29. )
  30. )
  31. )
  32. :shuchu
  33. echo 0的个数为: !num0!
  34. echo 1的个数为: !num1!
  35. echo 2的个数为: !num2!
  36. echo 3的个数为: !num3!
  37. echo 4的个数为: !num4!
  38. echo 5的个数为: !num5!
  39. echo 6的个数为: !num6!
  40. echo 7的个数为: !num7!
  41. echo 8的个数为: !num8!
  42. echo 9的个数为: !num9!
  43. pause>nul
复制代码

运行发现一闪而过,不管我在哪里加PAUSE
不段测试
不同地方加了pause
而且截取了部分分别看是否能运行
还是不知道哪里错了
请老手指教
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

测试失败
没有结果?
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

方法果然精简,哈哈,收获了
@echo off &setlocal enabledelayedexpansion
set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246000"
set num=0
for /l %%a in (0,1,9) do (
        for /l %%b in (0,1,200) do (
            if "!str:~%%b,1!"=="!num!" (
            set /a z%%a+=1
            )
        )
        echo %%a出现:!z%%a!次.
        set /a num+=1
)
pause
@echo off &setlocal enabledelayedexpansion
set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246000"
for /l %%a in (0,1,9) do (
        for /l %%b in (0,1,200) do (
            if "!str:~%%b,1!"=="%%a" set /a num%%a+=1
        )
        echo %%a出现:!num%%a!次.
)
pause

这两个OK
但是
@echo off &setlocal enabledelayedexpansion
set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246"
call :test
for /f "tokens=1,* delims=_=" %%i in ('set _') do echo %%i出现的次数为:%%j
pause>nul

:test
for /l %%i in (0 1 200) do (
set "var=!str:~%%i,1!"
if "!var!"=="" goto :eof
set /a _!var!+=1
)

不行。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP


经%#&%…………%@!@¥#发现是我的CMD有问题,
呵呵
惭愧啊!!
大家的代码都OK!
呵呵
不过随风和YOUXI的有点难度,呵呵
就要这样才好,不同思路,这样才有的看头和学习啊
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

返回列表