[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
不用搞那么麻烦的,首先用那么多的if去检测,代码就不怎么“健康”
测试代码:
  1. @echo off &setlocal enabledelayedexpansion
  2. set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246"
  3. call :test
  4. for /f "tokens=1,* delims=_=" %%i in ('set _') do echo %%i出现的次数为:%%j
  5. pause>nul
  6. :test
  7. for /l %%i in (0 1 200) do (
  8.     set "var=!str:~%%i,1!"
  9.     if "!var!"=="" goto :eof
  10.     set /a _!var!+=1
  11. )
  12.    
复制代码

TOP

原帖由 novaa 于 2007-11-20 19:27 发表
测试失败
没有结果?


我怎么测试有结果啊?
  1. 1出现的次数为:12
  2. 2出现的次数为:9
  3. 3出现的次数为:10
  4. 4出现的次数为:17
  5. 5出现的次数为:16
  6. 6出现的次数为:8
  7. 7出现的次数为:5
  8. 8出现的次数为:7
  9. 9出现的次数为:4
复制代码

TOP

原帖由 泛滥棏慌° 于 2007-11-20 19:31 发表
@echo off &setlocal enabledelayedexpansion
set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246000"
set num=0
for /l %%a in (0,1,9) do (
        for /l ...

这个for循环从效率上来讲是不错的,不过运行起来似乎还是有些浪费,比如:数字中要是没有1呢?....
代码是不是还可以精简一点呢?
  1. @echo off &setlocal enabledelayedexpansion
  2. set "str=4545658721212489654213134156749879456431215453535542124748643515348687893513215643541246000"
  3. for /l %%a in (0,1,9) do (
  4.         for /l %%b in (0,1,200) do (
  5.             if "!str:~%%b,1!"=="%%a" set /a num%%a+=1
  6.         )
  7.         echo %%a出现:!num%%a!次.
  8. )
  9. pause
复制代码

TOP

哦,有那样的事?我怎么测试行呢?
而且可以有运行结果呢?

TOP

返回列表