本帖最后由 CrLf 于 2011-8-13 13:33 编辑
- @echo off
- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (1 1 10) do (
- rem 循环十次
- set /a num=!random! %% 9+1
- rem 设置num的值为1~9的随机数
- call set str=%%str:!num!=%%!num!
- rem 把 str 变量中对对应数字放到最后
- )
- echo !str:~2,4!
- pause
复制代码 作用是随机打乱字符串顺序,但是这条代码在循环中使用 call,导致效率低下,除非是不得已或者特殊情况才这么用
改进:- @echo off
- setlocal enabledelayedexpansion
- set /a str=123456789
- for /l %%i in (9 -1 1) do (
- set /a num=!random! %% %%i,next=num+1
- for /f "tokens=1,2" %%x in ("!num! !next!") do set str=!str:~,%%x!!str:~%%y!!str:~%%x,1!
- rem 不使用变量替换,而改用偏移
- )
- echo !str:~2,4!
- pause
复制代码
|