Board logo

标题: [文本处理] 【已解决】批处理如何随机读取一文本文档中的某行? [打印本页]

作者: smallbear    时间: 2009-5-20 19:10     标题: 【已解决】批处理如何随机读取一文本文档中的某行?

求一个能读取批定文本文档中随机行的批处理。谢谢。小弟第一次发帖。

[ 本帖最后由 smallbear 于 2009-5-21 17:49 编辑 ]
作者: namejm    时间: 2009-5-20 19:53

  先用 findstr /n 判断文档总行数,然后用 random 在指定范围内生成随机数,最后,跳过随机数行直接读取下一行即可,演示代码如下:
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n . test.txt') do set total=%%i
  3. :loop
  4. set /a rnd=%random% %% %total%
  5. if %rnd% equ 0 goto loop
  6. for /f "skip=%rnd% delims=" %%i in (test.txt) do set "str=%%i"&goto end
  7. :end
  8. echo "%str%"
  9. pause
复制代码
  注:本代码不能获取第1行内容,要想获取到第1行内容,请看4楼代码。
作者: smallbear    时间: 2009-5-20 20:07

谢谢帮忙。非常感谢。
作者: tireless    时间: 2009-5-20 22:05

  1. @echo off
  2. cd /d "文本所在路径\"
  3. for /f "delims=: tokens=2" %%a in ('find /c /v "" a.txt') do set n=%%a
  4. set /a m=%random% %% n
  5. if %m%==0 (set skip=) else set skip=skip=%m%
  6. for /f "%skip% delims=" %%a in (a.txt) do set "str=%%a" & goto end
  7. :end
  8. echo "%str%"
  9. pause
复制代码

作者: fyb198351    时间: 2009-5-22 16:28

@echo off
for /f "delims=[]" %%i in ('type 1.txt^|find /v /n ""') do set tal=%%i
:loop
set /a run=%random%%%tal
if %run% equ 0 goto loop
for /f "tokens=2 delims=[]" %%a in ('type 1.txt^|find /n "%run%"') do echo 这是第%run%行%%a
echo.&echo.按任意键显示下一个随机行
pause >nul
goto loop

[code]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2