中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [在线求助] 关于FOR提取TXT文本随即行
作者:
标题: [在线求助] 关于FOR提取TXT文本随即行 上一主题 | 下一主题
414893029
初级用户





积分 45
发帖 23
注册 2007-10-29
状态 离线
『楼 主』:  [在线求助] 关于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

[HKEY_LOCAL_MACHINE\Software\InterServ\Meteor]
"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 ]

2008-4-10 10:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 2 楼』:  

这个意思?
@echo off&setlocal enabledelayedexpansion
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%
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 414893029 分数: +2  时间:2008-4-10 11:29




简单!简单!再简单!
2008-4-10 11:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
414893029
初级用户





积分 45
发帖 23
注册 2007-10-29
状态 离线
『第 3 楼』:  

不好意思...我真的看的不明白....

但...我的意思写的很清楚了..就是从那么多的CDK中随即拿一个写入注册表

2008-4-10 11:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

随机生成一个然后skip掉这么多行,读取一行……

2008-4-10 11:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
414893029
初级用户





积分 45
发帖 23
注册 2007-10-29
状态 离线
『第 5 楼』:  

谢谢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

2008-4-10 11:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gao123
新手上路





积分 12
发帖 6
注册 2008-2-21
状态 离线
『第 6 楼』:  bucuo

bu cuo

2008-4-10 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gao123
新手上路





积分 12
发帖 6
注册 2008-2-21
状态 离线
『第 7 楼』:  不错

学习了

2008-4-10 13:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
414893029
初级用户





积分 45
发帖 23
注册 2007-10-29
状态 离线
『第 8 楼』:  

其实我还不是很懂....希望有人能好心细节讲下

2008-4-10 17:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 9 楼』:  

set/a n=%random%%%11+1

中的,%random%%%11会产生一个0到10 的随机数。+1就产生一个1到11的随机数。

余下的就是从文件中取出同随机数相同的行。

2008-4-10 17:14
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  我来解释下:



  Quote:
@echo off&setlocal enabledelayedexpansion
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%
pause

应楼主的意思逐句解释如下:
@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值将永远为空。
也就粗略地解释到此吧,希望能给楼主以帮助。



批处理之家新域名:www.bathome.net
2008-4-10 17:27
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复

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


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



论坛跳转: