标题: [求助] - 随机读取指定文本的一行
[打印本页]
作者: h2o
时间: 2006-10-18 04:33
标题: [求助] - 随机读取指定文本的一行
……
:var1
for /f %%a in (cont.txt) do (
随机从 cont.txt 中读一行
)
……
for /f %%a in (a.txt) do (
echo %%a
call :var1
echo 上面这个 call :var1 读取到的 一行 内容
)
==================
请问,这个 "随机从 cont.txt 中读一行" 可以实现吗?
附:
a.txt
------------------
25651970
258849156
258849116
258849007
258848294
258848275
258848272
258848252
88848250
…… ( 约 百 行 )
cont.txt
-----------------
知否 知否,应是绿肥红瘦
月落乌蹄霜满天 江枫渔火对愁眠
转轴拨弦三两声 未成曲调先有情
春花秋月何时了
往事知多少
小楼昨夜又东风
银烛秋光冷画屏 轻罗小扇扑流萤
…… ( 约 200 行 )
============================
还想实现另外一个功能,就是 call :var2
call :var2 读取的就不是随机的 而是 a.txt 和 cont.txt 一行一行对应的,比如:
25651970
知否 知否,应是绿肥红瘦
258849156
月落乌蹄霜满天 江枫渔火对愁眠
258849116
转轴拨弦三两声 未成曲调先有情
……
==============
呵呵 真是不好意思 又来麻烦大家 :D
作者: NaturalJ0
时间: 2006-10-18 04:53
可以配合 %random% 、% 、 for /f "skip=" 、 goto 一起用。
PS: 我在想你的第一个文件有什么用处。
[
Last edited by NaturalJ0 on 2006-10-18 at 04:55 ]
作者: vkill
时间: 2006-10-18 05:38
没有看明白楼主想做什么
作者: namejm
时间: 2006-10-18 05:56
建议:多用论坛里的搜索功能。
先链接一个类似的讨论贴过来:
一个关于随机获取文件名的问题.
作者: pengfei
时间: 2006-10-18 09:54
嘎嘎~ 楼主的提问真难理解. 以下是你要的两段代码:
::随机抽取cont中的一行, 显示在a.txt每一行的下面.
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%c in (a.txt) do (
echo %%c
call :var1
echo !ii!
)
pause
goto :eof
:var1
for /f "tokens=* skip=%random:~-2%" %%i in (cont.txt) do (
set ii=%%i
goto :eof
)
::a.txt与cont.txt中每一行准确对应, 显示的行数将以行数最少的一个文本为准.
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%c in (a.txt) do (
set /a num+=1
set num_=
for /f "tokens=*" %%i in (cont.txt) do (
set /a num_+=1
if "!num!"=="!num_!" (
echo %%c
echo %%i
)
)
)
pause
[
Last edited by pengfei on 2006-10-18 at 09:55 ]
作者: h2o
时间: 2006-10-18 11:06
2 楼 NaturalJ0 ,
PS: 我在想你的第一个文件有什么用处。
---------
回 NaturalJ0 朋友,
哈哈哈 这个啊 第一个文件是一个记录的id的列表
我想实现对应一个 id,后面附加另一条记录(cont.txt 中的一行内容)
===============================
是我表达的的不够明白 呵呵
我补充一下,
概括点说呢,呃 就是运行代码 然后会从 cont.txt 这个多行的文本中 随机的读取一行(只要一行)的内容出来。
===============================
to namejm 版主,
我搜索了哦 那个文章我之前也有看了的 可是
里边的代码好多我都不能理解 不能将它们改装为己用,所以只好发个新贴子了

作者: h2o
时间: 2006-10-18 11:11



啊?我刚刷新 哎呀 感动感动 谢谢 pengfei 朋友,太感动了
我测试一下先

作者: 3742668
时间: 2006-10-18 11:33
@echo off
setlocal ENABLEDELAYEDEXPANSION
set file=a.txt
set file2=b.txt
:start
for /f "delims=: tokens=1,*" %%i in ('findstr /n . %file%') do set "%%i=%%j" && set num=%%i
set /a "col=%random% %% 100"
set /a col2 = %col% - 1
for /f "skip=%col2% delims=" %%i in (%file2%) do echo !%col%! && echo %%i && goto next
:next
pause
假设两个文件都只有100行。
功能1,2都整合在里面.
作者: yardian
时间: 2006-10-18 12:54
虽然现在用不着,先收起来以后备用