中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]从字符串中随机取字符
作者:
标题: [求助]从字符串中随机取字符 上一主题 | 下一主题
ruisoft
初级用户





积分 93
发帖 57
注册 2007-3-12
状态 离线
『楼 主』:  [求助]从字符串中随机取字符

我想从字符串 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 ]

2010-5-7 12:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  


@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




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-5-7 12:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  

或者写成
@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 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-5-7 12:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ruisoft
初级用户





积分 93
发帖 57
注册 2007-3-12
状态 离线
『第 4 楼』:  

CALL SET STR=!STR!%%WORDS:~!L!,1%%

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

2010-5-7 12:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ruisoft
初级用户





积分 93
发帖 57
注册 2007-3-12
状态 离线
『第 5 楼』:  

CALL 不是子程序调用吗?

2010-5-7 12:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 6 楼』:  

在这里,call进行嵌套的变量扩展



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-5-7 12:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ruisoft
初级用户





积分 93
发帖 57
注册 2007-3-12
状态 离线
『第 7 楼』:  

谢谢你!

2010-5-7 12:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 8 楼』:  

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



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-5-7 13:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: