楼 主
[10QB悬赏]请教大家
发表于 2010-11-18 16:11 · 中国 山西 长治 联通
新手上路
★
积分 10 发帖 10 注册 2010-01-21 01:30 UID 159120 性别 男
状态 离线
请教大家,批处理如何调用一个文本随机行并分别定义变量?
文本内容如:
——————————
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 ]
第 2 楼
发表于 2010-11-18 16:12 · 中国 山西 长治 联通
新手上路
★
积分 10 发帖 10 注册 2010-01-21 01:30 UID 159120 性别 男
状态 离线
第 3 楼
发表于 2010-11-18 17:08 · 中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362 发帖 1,133 注册 2008-02-02 21:36 UID 110072 性别 男
状态 离线
第 4 楼
纯粹是为了学习讨论,呵呵。
发表于 2010-11-18 18:13 · 中国 湖南 怀化 电信
初级用户
★★
积分 66 发帖 53 注册 2009-10-09 20:51 UID 152852 性别 男
状态 离线
::如果每行中间的那个数字是序号的话,可以用 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 ]
第 5 楼
发表于 2010-11-18 18:15 · 中国 湖南 怀化 电信
初级用户
★★
积分 66 发帖 53 注册 2009-10-09 20:51 UID 152852 性别 男
状态 离线
::如果每行中间的那个数字不是序号,而是个不定数的话。
@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 ]
第 6 楼
发表于 2010-11-18 18:47 · 中国 湖南 怀化 电信
初级用户
★★
积分 66 发帖 53 注册 2009-10-09 20:51 UID 152852 性别 男
状态 离线
::如果文件内容都是纺一格式(没有多余信息行),每行中间的数是不定数的话。
@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 ]
第 7 楼
发表于 2010-11-18 22:23 · 中国 山西 长治 联通
新手上路
★
积分 10 发帖 10 注册 2010-01-21 01:30 UID 159120 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正