中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]如何用批处理生成可变长度的字符串??
作者:
标题: [讨论]如何用批处理生成可变长度的字符串?? 上一主题 | 下一主题
learner0
初级用户





积分 108
发帖 49
注册 2008-2-26
状态 离线
『楼 主』:  [讨论]如何用批处理生成可变长度的字符串??

偶暂时还为想出,大家一起想想吧.....

2008-2-29 00:21
查看资料  发送邮件  发短消息 网志   编辑帖子
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

随机生成一个数。当长度,把它扔到循环里当次数就完了。

2008-2-29 00:43
查看资料  发短消息 网志   编辑帖子
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  

没明白啥意思
@echo off
for /l %%i in (0,1,200) do set /p= %%i<nul&ping -w200 127.1.0>nul
pause
???????



第一高手    第二高手

2008-2-29 00:59
查看资料  发送邮件  发短消息 网志   编辑帖子
learner0
初级用户





积分 108
发帖 49
注册 2008-2-26
状态 离线
『第 4 楼』:  

非也,要求每次产生的字符串的长度都不同,用随机变量也难行呀......

[ Last edited by learner0 on 2008-2-29 at 11:50 AM ]

2008-2-29 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子
learner0
初级用户





积分 108
发帖 49
注册 2008-2-26
状态 离线
『第 5 楼』:  

这是用随机变量产生的字符串,其长度有相同的...........
@echo off&setlocal enabledelayedexpansion
color f2
for /l %%j in (1,1,28) do (
  set a[%%j]=!rd!
  set /p= a[%%j]=!a[%%j]! <nul
  if %%j gtr 2 call :rndstr %%j)
echo.&pause

:rndstr
set str=abcdefghijklmnopqrstuvwxyz0123456789
set /a rd=%random%%%35+1
set str=!str:~%rd%!
set str
goto :eof

[ Last edited by learner0 on 2008-2-29 at 12:55 PM ]

2008-2-29 12:00
查看资料  发送邮件  发短消息 网志   编辑帖子
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by learner0 at 2008-2-29 11:49 AM:
非也,要求每次产生的字符串的长度都不同,用随机变量也难行呀......

[ Last edited by learner0 on 2008-2-29 at 11:50 AM ]

用系统时间(精确到秒)作为字符串长度变量
比如

  Quote:
C:\>echo %date% %time%
02/29/2008 Fri 13:09:38.73

那就产生20080229130938个字符,在我们有生之年可以满足每次字符串的长度都不同^_^

2008-2-29 14:23
查看资料  发短消息 网志   编辑帖子
learner0
初级用户





积分 108
发帖 49
注册 2008-2-26
状态 离线
『第 7 楼』:  

这个我知道,HAT兄搞^_^,你和slore兄的方法都行,该贴可结啦.....

[ Last edited by learner0 on 2008-2-29 at 02:46 PM ]

2008-2-29 14:43
查看资料  发送邮件  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 8 楼』:  

这个是随机的,缺点是用findstr判断的效率低,利用call set str=%%random%%%%random%%增加随机位数
@echo off
cd.>list.txt
:loop
set/a n+=1
call set str=%%random%%
findstr /c:"[%str%]" list.txt&&goto loop||>>list.txt echo [%str%]
echo %n% %str%
if %n% lss 50 goto loop
pause




2008-2-29 16:46
查看资料  发短消息 网志   编辑帖子
pinghu
中级用户





积分 307
发帖 130
注册 2008-2-1
状态 离线
『第 9 楼』:  

既然是随机数,就避免不了重复,
要避免重复,就必须记住记住以前的每个随机数,用变量记忆太费资源,用文本记忆容易但查寻速度慢,很难找到折中的办法

我有个想法,能否用一个有规律的数列生成一个不重复的数列
希望大家一起研究

2008-3-1 12:51
查看资料  发送邮件  发短消息 网志   编辑帖子
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 10 楼』:  

set 000=%random%/20
set /a 000%(%random%%9+1)



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2008-3-1 13:29
查看资料  发短消息 网志   编辑帖子

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


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



论坛跳转: