中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 19:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求教:如何显示一个文本内的随机行? 查看 1,995 回复 20
16 发表于 2007-02-03 04:59 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  6楼的代码可以实现这个功能,只不过是以引号来表示空行的。如果要显示真正的空行的话,echo语句加个判断就行了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
17 发表于 2007-02-03 05:44 ·  中国 吉林 长春 电信
初级用户
积分 39
发帖 16
注册 2007-01-30 05:29
19年会员
UID 78088
性别 男
状态 离线
楼上各位真热心^_^

逐楼学习中!!
18 发表于 2007-02-03 05:53 ·  中国 吉林 长春 电信
初级用户
积分 39
发帖 16
注册 2007-01-30 05:29
19年会员
UID 78088
性别 男
状态 离线
关于2楼的代码由于水平有限实在看的不是很明白,谁能否帮忙解释一下呢?
@ECHO %DBG% OFF
SETLOCAL ENABLEDELAYEDEXPANSION--这句具体的作用是什么呢?帮助里说的很晦涩,实在看的不是很明白

FOR /F "TOKENS=*--这里用*是什么作用呢--" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i)--r!h!是什么意思呢?--
SET /A s=%RANDOM%%%%h%+1--这句的%很多,没分明白:(也请仔细解释一下--
ECHO !r%s%!

[ Last edited by theoldman on 2007-2-2 at 05:19 PM ]
19 发表于 2007-02-03 06:11 ·  中国 吉林 长春 电信
初级用户
积分 39
发帖 16
注册 2007-01-30 05:29
19年会员
UID 78088
性别 男
状态 离线
在论坛搜索了一下
FOR /F "TOKENS=*--这里用*是什么作用呢--" 这个是查找所有列吧?此处如果不用这个参数可以么?
20 发表于 2007-02-03 12:36 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
@ECHO %DBG% OFF
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "TOKENS=*" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i)
SET /A s=%RANDOM%%%%h%+1
ECHO !r%s%!
这个p中,加r的意思是什么呀?
SET /A s=%RANDOM%%%%h%+1这一行看着点晕、??

[ Last edited by anqing on 2007-2-3 at 12:39 PM ]
21 发表于 2007-02-10 00:51 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
灌水

randomize
set fso=createobject("scripting.filesystemobject")
set a=createobject("scripting.dictionary")
set file=fso.opentextfile("a.txt")
do while file.atendofstream<>true
m=m+1
a.add m,file.readline
loop
file.close
h=int(rnd*m)
msgbox "第" & h & "行: " & a(h) ,4096,"随机内容"
论坛跳转: