找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16372|回复: 4

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

[复制链接]
发表于 2009-5-20 19:10:56 | 显示全部楼层 |阅读模式
求一个能读取批定文本文档中随机行的批处理。谢谢。小弟第一次发帖。

[ 本帖最后由 smallbear 于 2009-5-21 17:49 编辑 ]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-5-20 19:53:44 | 显示全部楼层
  先用 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楼代码。
 楼主| 发表于 2009-5-20 20:07:19 | 显示全部楼层
谢谢帮忙。非常感谢。
发表于 2009-5-20 22:05:15 | 显示全部楼层
  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
复制代码

评分

参与人数 2PB +4 收起 理由
Batcher + 2 Good work!
namejm + 2 能读取到第1行内容,思维很缜密。

查看全部评分

发表于 2009-5-22 16:28:38 | 显示全部楼层
@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]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:24 , Processed in 0.025511 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表