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

跟风:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,500) do set "str=!str! !random!"
  3. for %%a in (%str%) do (
  4.     if defined .!_%%a! (
  5.        for %%b in (.!_%%a!) do set "%%b=!%%b! %%a"
  6.        ) else (
  7.        for %%b in (%str%) do if %%a geq %%b set /a _%%a+=1
  8.        set ".!_%%a!=%%a"
  9.     )
  10. )
  11. for /l %%a in (1,1,500) do set "var=!var! !.%%a!"
  12. echo !var!
  13. pause>nul
复制代码
***共同提高***

TOP

再来个效率高的:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,500) do set "str=!str! !random!"
  3. for %%a in (%str%) do (
  4.     set /a n+=1
  5.     set "str=0000000000%%a"&set "str=!str:~-10!"
  6.     set "_!str!_!n!=%%a"
  7. )
  8. for /f "tokens=2 delims==" %%a in ('set _') do set "var=!var! %%a"
  9. echo !var!
  10. pause>nul
复制代码
***共同提高***

TOP

这个不通用:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,500) do set "str=!str! !random!"
  3. for %%a in (%str%) do (
  4.     for %%b in (min max) do (
  5.         if not defined %%b (
  6.            set /a %%b=%%a
  7.            ) else (
  8.            if %%b equ min if %%a lss !min! set /a min=%%a
  9.            if %%b equ max if %%a gtr !max! set /a max=%%a
  10.         )
  11.     )
  12.     if not defined _%%a (
  13.        set "_%%a=%%a"
  14.        ) else (
  15.        set "_%%a=!_%%a! %%a"
  16.     )
  17. )
  18. for /l %%a in (%min%,1,%max%) do (
  19.     for %%b in (!_%%a!) do set "var=!var! %%a"
  20. )
  21. echo !var!
  22. pause>nul
复制代码
***共同提高***

TOP

11# wc726842270
你试下当str中有数值重复的情况看。。。
***共同提高***

TOP

递归法(效率一般)
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,500) do set "str=!str! !random!-%%a"
  3. echo !str!
  4. for /l %%a in (1,1,250) do (
  5.     for %%a in (!str!) do (
  6.         for /f "tokens=1,2 delims=-" %%b in ("%%a") do (
  7.             for %%d in (max min) do (
  8.                 if not defined %%d (
  9.                    set /a %%d=%%b
  10.                    ) else (
  11.                    if %%d equ max if %%b gtr !%%d! set /a %%d=%%b
  12.                    if %%d equ min if %%b lss !%%d! set /a %%d=%%b
  13.                 )
  14.              )
  15.         )
  16.      )
  17.      for %%a in (max min) do (
  18.          for %%b in (!str!) do (
  19.              for /f "tokens=1,2 delims=-" %%c in ("%%b") do (
  20.                  if %%c equ !%%a! (
  21.                     set "str=!str: %%b=!"
  22.                     if %%a equ max set "_%%a=%%c !_%%a!"
  23.                     if %%a equ min set "_%%a=!_%%a! %%c"
  24.                   
  25.                  )
  26.               )
  27.           )
  28.           set "%%a="
  29.       )
  30. )
  31. echo %_min:~1% %_max:~1%
  32. pause>nul
复制代码
***共同提高***

TOP

返回列表