- ::代码本意是利用随机数挑出十个不相同的字母。但在for语句中,一旦goto语句实现
- ::运行一次,只要求得字母与前面挑出来的不相同,就跳出循环,而不会继续运行剩
- ::下的for循环次数。
- ::代码如下:
- @echo off&setlocal enabledelayedexpansion
- set "str1=abcdefghijklmnopqrstuvwxyz"
- for /l %%i in (1,1,10) do (
- :loop
- set/a m=!random!%%26
- call,set res1=%%str1:~!m!,1%%&echo.!res1!
- echo."!rad1!"|findstr "!res1!"
- if !errorlevel!==0 (goto loop) else set "rad1=!rad1! !res1!"
- )
- echo.a=%rad1%
- pause
复制代码 不用for要实现随即挑10个不相同的字母,我改用下述方法实现,但上面的问题还是缠绕着我!- @echo off&setlocal enabledelayedexpansion
- set "str1=abcdefghijklmnopqrstuvwxyz"
- :loop
- set/a m=!random!%%26
- call,set res1=%%str1:~!m!,1%%&echo.!res1!
- echo."!rad1!" |findstr "!res1!"
- if !errorlevel!==0 (goto loop
- ) else (
- set/a num+=1
- set "rad1=!rad1! !res1!"
- if !num! lss 10 goto loop
- )
- echo.a=%rad1%
- pause
复制代码
[ 本帖最后由 pumahxh 于 2009-12-18 15:09 编辑 ] |