![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-13 22:33 |
共 47,812 主题排行 / 349,916 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 一个关于随机获取文件名的问题. |
| 可打印版本 18,643 / 54 |
| 第16楼 zh159 | 发表于 2006-07-27 20:38 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
重新编了一个,不用文本查询,清除写入过列表的变量来判断循环生成随机数
137个文件30秒内完成(随机数运气好的话速度就快,越往后有效变量越少越慢): 红色部分不要
好像有个小毛病:有时候会失败退出:( [ Last edited by zxcv on 2006-7-28 at 01:19 ] |
|
| 第17楼 zh159 | 发表于 2006-07-27 20:57 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
来一个自动判断文件数量设置随机位数的:
@echo off |
|
| 第18楼 voiL | 发表于 2006-07-27 21:44 |
| 中级用户 发帖 189 积分 384 | |
|
有这么多朋友的代码相信已经足够矣...
我拿下来慢慢研究一下,希望能拼凑个更快更有效率的出来...^_^ 谢谢各位... |
|
| 第19楼 无奈何 | 发表于 2006-07-27 22:20 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
Re voiL
在我这里每次的执行结果都不是一样的,并且没有文件名前的"编号"。麻烦贴一下结果我看看。 |
|
| 第20楼 zh159 | 发表于 2006-07-27 22:42 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
无奈何版主的不错,速度也快
不过有空格的文件名断了(不完整)应该可以些改一下 |
|
| 第21楼 namejm | 发表于 2006-07-27 23:00 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by doscc at 2006-7-27 20:38: 大概弄明白了你的过滤规则。 你在16楼的代码有问题,不知道红字部分是注释还是代码;如果是代码的话,执行完毕之后,list.txt文件里会有为数众多的行内容为“ 清除已写入列表的变量”;如果是注释的话,把注释部分清除掉之后,list.txt中为数众多的行内容为"ECHO 处于关闭状态。" 你说这段代码有时候会失败退出,估计是要处理的行数太多,导致name!N!变量太多,而CMD中变量的数量好象是有限制的。 [ Last edited by namejm on 2006-7-28 at 09:13 ] |
|
| 第22楼 namejm | 发表于 2006-07-27 23:09 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by zxcv at 2006-7-27 22:42: 无奈何版主的代码,除了9楼有一处之外,在什么地方还有哦?也想拿来跑一下。 |
|
| 第23楼 doscc | 发表于 2006-07-27 23:40 |
| 中级用户 发帖 93 积分 256 来自 广东 | |
Originally posted by namejm at 2006-7-27 23:00: 16 楼是 zxcv 兄的代码. 11楼 则是我的代码. 以作更新! |
|
| 第24楼 无奈何 | 发表于 2006-07-27 23:51 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
Re zxcv
谢谢指正,含空格的文件名确实有问题,简单修正一下。 Re namejm 请见本楼修正代码。
|
|
| 第25楼 zh159 | 发表于 2006-07-28 00:00 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
无奈何版主代码的速度很快,137个文件只用了不到3秒
@echo off [ Last edited by zxcv on 2006-7-28 at 00:02 ] |
|
| 第26楼 namejm | 发表于 2006-07-28 00:50 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re doscc:
sorry,把你的代码看错了,不好意思。 |
|
| 第27楼 zh159 | 发表于 2006-07-28 01:11 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by namejm at 2006-7-27 23:00: 后面文字为注悉,BAT里面不要 name!N!变量我试过548都没问题,估计是 echo set Name=%%Name!N!%%>Temp.bat call Temp.bat 这部分有时候来不及反应 [ Last edited by zxcv on 2006-7-28 at 01:18 ] |
|
| 第28楼 namejm | 发表于 2006-07-28 09:12 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re zxcv:
如果你红色部分为注释的话,这样的注释格式是错误的,有的地方还会引起执行错误,比如 set Name!N!=清除已写入列表的变量 这一句,会把"清除已写入列表的变量"这个值赋给Name!N!这个变量,希望你能修正。 |
|
| 第29楼 namejm | 发表于 2006-07-28 09:25 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
无奈何版主25楼的代码写得简洁至极,同时也让人费解至极,看了老半天,还是云里雾里的,难道真的像他以前所声称的那样,代码要写得尽量简洁、尽量晦涩?如果只是简洁,那可是我等的福气;如果再加上“尽量晦涩难懂”,我的妈呀,估计要晕倒一片像我这样的菜菜。希望无奈何版主能把你的代码稍微点拨一下,以便让我们对你的思路有所了解,光有9楼的只言片语我觉得还不过瘾。
发现了一个有趣的现象:如果把24楼代码打头的那句@echo off去掉,list.txt的内容将会大大增加,增加的内容形如"\当前文件夹名>echo 20454",一般而言,如果文件有N个,这样的内容也回增加N行,按理说@echo off语句只是起屏蔽回显的作用,但是在这段代码中竟然会影响执行结果,有点匪夷所思。顺便提一下,代码中的@echo %%b>>List.txt和@call :sub %%i中的@去掉之后似乎并不影响代码执行时候的表现,不知道无奈何版主为何还要保留@。 [ Last edited by namejm on 2006-7-28 at 10:59 ] |
|
| 第30楼 zh159 | 发表于 2006-07-28 09:42 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by namejm at 2006-7-28 09:12: 说实话,那是我说明本行的作用发贴时加上去的,真正的BAT中本来就没有(所以我的说明:红色部分不要);不过你应该可以看得懂那些是不要的啊 俺不太清楚怎样在后面加上不影响代码的注悉 ![]() |
|
| 上一页 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |