标题: [文本处理] 【已解决】批处理如何随机读取一文本文档中的某行? [打印本页]
作者: smallbear 时间: 2009-5-20 19:10 标题: 【已解决】批处理如何随机读取一文本文档中的某行?
求一个能读取批定文本文档中随机行的批处理。谢谢。小弟第一次发帖。
[ 本帖最后由 smallbear 于 2009-5-21 17:49 编辑 ]
作者: namejm 时间: 2009-5-20 19:53
先用 findstr /n 判断文档总行数,然后用 random 在指定范围内生成随机数,最后,跳过随机数行直接读取下一行即可,演示代码如下:- @echo off
- for /f "delims=:" %%i in ('findstr /n . test.txt') do set total=%%i
-
- :loop
- set /a rnd=%random% %% %total%
- if %rnd% equ 0 goto loop
-
- for /f "skip=%rnd% delims=" %%i in (test.txt) do set "str=%%i"&goto end
-
- :end
- echo "%str%"
- pause
复制代码
注:本代码不能获取第1行内容,要想获取到第1行内容,请看4楼代码。
作者: smallbear 时间: 2009-5-20 20:07
谢谢帮忙。非常感谢。
作者: tireless 时间: 2009-5-20 22:05
- @echo off
- cd /d "文本所在路径\"
- for /f "delims=: tokens=2" %%a in ('find /c /v "" a.txt') do set n=%%a
-
- set /a m=%random% %% n
-
- if %m%==0 (set skip=) else set skip=skip=%m%
- for /f "%skip% delims=" %%a in (a.txt) do set "str=%%a" & goto end
-
- :end
- echo "%str%"
- 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 |