![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 01:24 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [在线求助] 关于FOR提取TXT文本随即行 |
| 可打印版本 915 / 9 |
| 第1楼 414893029 | 发表于 2008-04-10 10:46 |
| 初级用户 发帖 23 积分 45 | |
|
[在线求助] 关于FOR提取TXT文本随即行 不好意思...虽然我一直潜水..但是仍然很菜..
规矩懂的...搜索已经找不到我想要的了..所以才开此贴 事情是这样的...我是一个网吧管理员. 刚装了流星蝴蝶剑 ... 因为需要序列号...我整了个注册表写入... 可是...一联网就出现序列号相同... 恩.. 我试着写了个P @echo off regedit /s G:\Meteor\流星蝴蝶剑.reg ........ ........ reg add "HKEY_LOCAL_MACHINE\Software\InterServ\Meteor" /v Serial /t reg_sz /d %random% /f start G:\Meteor\Meteor.exe ======================= 流星蝴蝶剑.reg REGEDIT4 "Path"="G:\\Meteor" "Exe"="G:\\Meteor\\meteor.exe" "Serial"="d32c1542240dc7" "Uninstall"="RunDll32 C:\\PROGRA~1\\COMMON~1\\INSTAL~1\\ENGINE\\6\\INTEL3~1\\Ctor.dll,LaunchSetup \"C:\\Program Files\\InstallShield Installation Information\\{4AB3FF26-7194-49B8-8E3F-C12890B3894C}\\SETUP.EXE\" -l0x804 " ====================== 然后..问题出现了P中的%random%是指我的一个名为CDK.TXT的文件 ====================== CDK.TXT d32c1542240dc7 f0a03ce05646f4 95d918e3d1ef61 19654494997df4 c3bd21990b3182 72d1e4a2c9c57b e831d060c0b8a9 43e4a0bb1b4842 abca5be7b61c56 1c7fc8cbc22a2f 862cf5bd2fce26 ======================= 小弟水平有限..关于随即变量真的搞不透彻... 现在我想让%random%取代CDK.TXT随即一行 完成上文的P 还望各位兄台耐心帮小弟一忙 [ Last edited by 414893029 on 2008-4-10 at 10:48 AM ] |
|
| 第2楼 terse | 发表于 2008-04-10 11:16 |
| 银牌会员 发帖 946 积分 2,404 | |
|
这个意思?
|
|
| 第3楼 414893029 | 发表于 2008-04-10 11:19 |
| 初级用户 发帖 23 积分 45 | |
|
不好意思...我真的看的不明白....
但...我的意思写的很清楚了..就是从那么多的CDK中随即拿一个写入注册表 |
|
| 第4楼 slore | 发表于 2008-04-10 11:22 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
随机生成一个然后skip掉这么多行,读取一行……
|
|
| 第5楼 414893029 | 发表于 2008-04-10 11:29 |
| 初级用户 发帖 23 积分 45 | |
|
谢谢2楼terse兄...已经可以完成我的P了..
@echo off&setlocal enabledelayedexpansion regedit /s G:\Meteor\流星蝴蝶剑.reg set/a n=%random%%%11+1 for /f "delims=" %%i in (CDK.TXT) do ( set /a m+=1 if !m! equ %n% set "str=%%i" ) echo %str% reg add "HKEY_LOCAL_MACHINE\Software\InterServ\Meteor" /v Serial /t reg_sz /d %str% /f start G:\Meteor\Meteor.exe |
|
| 第6楼 gao123 | 发表于 2008-04-10 13:37 |
| 新手上路 发帖 6 积分 12 | |
|
bucuo bu cuo
|
|
| 第7楼 gao123 | 发表于 2008-04-10 13:38 |
| 新手上路 发帖 6 积分 12 | |
|
不错 学习了
|
|
| 第8楼 414893029 | 发表于 2008-04-10 17:04 |
| 初级用户 发帖 23 积分 45 | |
|
其实我还不是很懂....希望有人能好心细节讲下
|
|
| 第9楼 abcd | 发表于 2008-04-10 17:14 |
| 银牌会员 发帖 739 积分 1,436 | |
|
set/a n=%random%%%11+1
中的,%random%%%11会产生一个0到10 的随机数。+1就产生一个1到11的随机数。 余下的就是从文件中取出同随机数相同的行。 |
|
| 第10楼 bat-zw | 发表于 2008-04-10 17:27 |
| 金牌会员 发帖 1,276 积分 3,105 | |
我来解释下:@echo off&setlocal enabledelayedexpansion 应楼主的意思逐句解释如下: @echo off&setlocal enabledelayedexpansion关闭所有回显(包括echo本身),然后开启变量延迟,注意开启变量延迟是为了后面变量m的逐步赋值做准备。 set/a n=%random%%%11+1取得1-11间的随机数值(因cdk.txt的行数为1-11行),注意set/a n=%random%%%11取得的随机数值是0-10之间的,后面的+1则是把前面的值取到1-11间。 for /f "delims=" %%i in (CDK.TXT) do ( set /a m+=1 if !m! equ %n% set "str=%%i")是运用for命令对cdk.txt中所有行进行比对,比对一行给变量m的赋值加1,当m值累加到前面取到的n值大小时就将刚刚比对完的行赋值给变量str,也就是随机取cdk.txt中一行赋值给str,注意在这里%m%必须写成!m!不然m值将永远为空。 也就粗略地解释到此吧,希望能给楼主以帮助。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |