Board logo

标题: [求助]从字符串中随机取字符 [打印本页]

作者: ruisoft     时间: 2010-5-7 12:26    标题: [求助]从字符串中随机取字符
我想从字符串 WORDS 中随机取50个字符。本人写的代码如下,但得不到想要的结果。请高手们帮忙改正,本人先谢谢啦!

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET WORDS=abcdefghijklmnopqrstuvwxyz1234567890

SET STR=
FOR /L %%T IN (1,1,50) DO (
SET /A L=!RANDOM!%%36

SET WORD=%%WORDS:~!L!,1%%
SET STR=!STR!!WORD!
)

ECHO STR===!STR!

PAUSE

GOTO :EOF

变量 WORD 的赋值不正确!

Last edited by ruisoft on 2010-5-7 at 12:32 ]

作者: Hanyeguxing     时间: 2010-5-7 12:41
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
SET WORDS=abcdefghijklmnopqrstuvwxyz1234567890
FOR /L %%T IN (1,1,50) DO (
SET/A L=!RANDOM!%%36
CALL SET STR=!STR!%%WORDS:~!L!,1%%
)
ECHO STR===%STR%
PAUSE

作者: Hanyeguxing     时间: 2010-5-7 12:44
或者写成
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
SET WORDS=abcdefghijklmnopqrstuvwxyz1234567890
FOR /L %%T IN (1,1,50) DO (
SET/A L=!RANDOM!%%36
FOR %%J IN (!L!) DO SET STR=!STR!!WORDS:~%%J,1!
)
ECHO STR===%STR%
PAUSE

或是:
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
SET WORDS=abcdefghijklmnopqrstuvwxyz1234567890
FOR /L %%T IN (1,1,50) DO FOR /F %%J IN ('SET/A !RANDOM!%%36') DO SET STR=!STR!!WORDS:~%%J,1!
ECHO STR===%STR%
PAUSE


Last edited by Hanyeguxing on 2010-5-7 at 12:50 ]

作者: ruisoft     时间: 2010-5-7 12:46
CALL SET STR=!STR!%%WORDS:~!L!,1%%

此段代码如何理解?能否给个详细的说明呢?

作者: ruisoft     时间: 2010-5-7 12:47
CALL 不是子程序调用吗?

作者: Hanyeguxing     时间: 2010-5-7 12:51
在这里,call进行嵌套的变量扩展

作者: ruisoft     时间: 2010-5-7 12:56
谢谢你!

作者: Hanyeguxing     时间: 2010-5-7 13:00
上面三个示例:
第一个写起来最简单,但耗时比第二要长
第二个运行最快,但比第一个写起来麻烦
第三个,只是个思路而已,集中了前两个的缺点。。。