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


这样不需要考虑字符串限制吗?
我当初就是因为这个而放弃了set str=!str! !random!

TOP

16# applba
这个有限制的 所以不通用 仅当娱乐
另你一楼的  变量var 是多余的 可去除

TOP

17# terse


开启变量延迟后需要中间变量才能交换把?

还是有新方法?

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

18# applba
虽说在 15楼代码有字符长度限制 但效率并不低 故放上来的  下面就是所谓的冒泡把
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=500
  3. for /l %%i in (1,1,!n!) do set /a _%%i=!random!
  4.     for /l %%i in (1,1,!n!) do (
  5. set /a m=%%i+1
  6. for /l %%j in (!m!,1,!n!) do if !_%%i! gtr !_%%j! set/a _%%j=_%%i,_%%i=!_%%j!
  7.         echo !_%%i!
  8.     )
  9. pause
复制代码

TOP

返回列表