中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 论坛回收站 » [10QB悬赏]请教大家
作者:
标题: [10QB悬赏]请教大家 上一主题 | 下一主题
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『楼 主』:  [10QB悬赏]请教大家

[10QB悬赏]请教大家,批处理如何调用一个文本随机行并分别定义变量?


文本内容如:
——————————
WKS001 1 abcdefg
WKS002 2 abcdefg
WKS003 3 abcdefg
WKS004 4 abcdefg
WKS005 5 abcdefg
WKS006 6 abcdefg
WKS006 6 abcdefg
...
——————————
如此,行数不固定,每行3段字符分别用空格隔开,要求在批处理中随机调入某行,然后定义该行的3段字符为变量a b c

调试好以后,本人会给作者充值10Q币作为回报,谢谢大家

[ Last edited by adslcool on 2010-11-18 at 16:15 ]

2010-11-18 16:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『第 2 楼』:  

我QQ 165306921

2010-11-18 16:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 3 楼』:  

这Q币好像不难得到……  上面的接标了?



综合型编程论坛

我的作品索引
  
2010-11-18 17:08
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
wewebb
初级用户





积分 66
发帖 53
注册 2009-10-9
状态 离线
『第 4 楼』:  纯粹是为了学习讨论,呵呵。


::如果每行中间的那个数字是序号的话,可以用 Findstr 随机找出。

@echo off & Title 变量随机定义
Setlocal EnableDelayedExpansion

::查找文件里的有效数据有多少行:
For /f %%a in ('findstr  "^WKS"  File.txt  ') do (set /a N+=1)
Echo File.txt 文件共有 !N! 行有效数据!

::设置随机数,并用 Findstr 找出 行中间有对应数的那一行。
set /a Line=%Random% %% !N! +1
For /f "tokens=1-3" %%a in ('findstr " %Line% " File.txt ') do (
set "One=%%a"
set "Two=%%b"
set "Thr=%%c"
)
echo %One%
echo %Two%
echo %Thr%
Endlocal
Pause
[ Last edited by wewebb on 2010-11-18 at 18:30 ]

2010-11-18 18:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wewebb
初级用户





积分 66
发帖 53
注册 2009-10-9
状态 离线
『第 5 楼』:  


::如果每行中间的那个数字不是序号,而是个不定数的话。

@echo off & Title 变量随机定义
Setlocal EnableDelayedExpansion

::查找文件里的有效数据有多少行,并为每行加上行号:
(For /f "delims=" %%a in ('findstr  "^WKS"  File.txt  ') do (set /a N+=1 & echo !N! %%a) ) > NewFile.txt

Echo NewFile.txt 文件共有 !N! 行有效数据!

::设置随机行数,并用 Findstr 找出对应行。
set /a Line=%Random% %% !N! +1

For /f "tokens=2-4" %%a in ('findstr "^%Line% " NewFile.txt ') do (
set "One=%%a"
set "Two=%%b"
set "Thr=%%c"
)
echo %One%
echo %Two%
echo %Thr%
Endlocal
Pause
[ Last edited by wewebb on 2010-11-18 at 18:29 ]

2010-11-18 18:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wewebb
初级用户





积分 66
发帖 53
注册 2009-10-9
状态 离线
『第 6 楼』:  


::如果文件内容都是纺一格式(没有多余信息行),每行中间的数是不定数的话。

@echo off & Title 变量随机定义
Setlocal EnableDelayedExpansion

::查找文件里有多少行
For /f "delims=" %%a in (File.txt) do set /a N+=1

Echo File.txt 文件共有 !N! 行!

::设置随机行数
set /a Line=%Random% %% !N! +1

For /f "tokens=1-3" %%a in (File.txt) do (
set /a num+=1
if !num! == !Line! (set "One=%%a" & set "Two=%%b" & set "Thr=%%c")
)
echo %One%
echo %Two%
echo %Thr%
Endlocal
Pause
[ Last edited by wewebb on 2010-11-18 at 18:49 ]

2010-11-18 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『第 7 楼』:  

多谢各位,我先测试一下,上面大侠的

2010-11-18 22:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: