![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-24 12:53 |
共 47,811 主题排行 / 349,909 发帖 / 今日 0 篇 / 48,262 会员排行 |
| 论坛回收站 » [讨论]这里的random和sort是如何导致乱序的? |
| 可打印版本 2,087 / 3 |
| 第1楼 gool123456 | 发表于 2010-08-23 04:16 |
| 初级用户 发帖 76 积分 89 | |
|
[讨论]这里的random和sort是如何导致乱序的? 看不太懂 ,拿来一起看看
这段批处理乱序文本使用的原理是什么呢? 哦! 原来是sort排列了随机数 ,这里我糊涂了...[ Last edited by gool123456 on 2010-8-23 at 14:29 ] |
|
| 第2楼 gool123456 | 发表于 2010-08-23 04:26 |
| 初级用户 发帖 76 积分 89 | |
|
帖子标题已修改. 太久没发帖了.标题都忘了标关键字了... 有种耐人寻味的感觉。。。
回:523066680 这是在网上搜索问题看到的. [ Last edited by gool123456 on 2010-8-23 at 14:39 ] |
|
| 第3楼 523066680 | 发表于 2010-08-23 09:40 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
代码好像是bathome的 terse 回复的吧?
这个批处理是要双击运行的, 直接双击的时候参数是空, 也就是第一个参数不等于"$" 进入,第一个for: for读取这条命令的数据, ('"%~0" $^|sort') ,而 %~0 $^|sort 是先调用自身,参数为$,并把结果交给sort 排序。 { 那么现在又进了一个层次,脚本自身被调用,参数为$ ,进入第二个for ,他负责读取test.txt 每一行并在前面加一堆随机数并输出 } 在调用结束时就回到了之前,也就是 ('"%~0" $^|sort'), 这些数据因为开头的随机数被 sort 排序,排序后导致后面的数据被打乱。 然后交给for "tokens=2 delims=#" 只读每一行取随机数后面的内容 [ Last edited by 523066680 on 2010-8-23 at 09:42 ] |
|
| 第4楼 523066680 | 发表于 2010-08-23 09:45 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
分开来应该就容易看一点了:
a.bat
b.bat
重点是在前面加”随机数#每一行",sort对加了随机数的内容排序后导致原来的数据乱序, 然后for 读取结果 ,以#为分割,只读取第一个#之后的内容,也就是扔掉随机数并显示出来。 然后 [ Last edited by 523066680 on 2010-8-23 at 09:48 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |