标题: [求助]从字符串中随机取字符
[打印本页]
作者: 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
上面三个示例:
第一个写起来最简单,但耗时比第二要长
第二个运行最快,但比第一个写起来麻烦
第三个,只是个思路而已,集中了前两个的缺点。。。