Board logo

标题: [文本处理] 批处理如何随机提取文本的一行赋值给变量 [打印本页]

作者: freesoft00    时间: 2016-11-30 18:11     标题: 批处理如何随机提取文本的一行赋值给变量

本帖最后由 pcl_test 于 2016-11-30 20:34 编辑

批处理11.bat  同目录的22.txt。
其中22.txt有内容,都是一行一行的。
批处理11.bat,如何随机取出一行作为变量比如变量str,并显示echo %str%

如果22.txt的文本行数太多,规定10行以内或者20行以内也行。如果好编写就按照txt的行数随机。
作者: WHY    时间: 2016-11-30 23:05

本帖最后由 WHY 于 2016-12-1 08:05 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do set /a n+=1 & set "_!n!=%%i"
  3. set /a n = %Random% %% n + 1
  4. set "str=!_%n%!" & echo;!str!
  5. pause
复制代码

作者: WHY    时间: 2016-11-30 23:12

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f %%i in ('find /v /c "" ^< a.txt') do set /a n = !Random! %% %%i + 1
  3. (for /l %%i in (1 1 %n%) do set /p str=)<a.txt
  4. echo;!str!
  5. pause
复制代码

作者: happy886rr    时间: 2016-12-1 11:51

本帖最后由 happy886rr 于 2016-12-1 11:53 编辑

回复 1# freesoft00
推荐用我写的工具,专注行赋值的第三方seti.exe 地址:http://www.bathome.net/thread-42565-1-1.html
演示:
  1. @echo off
  2. title 行赋值演示
  3. mode con cols=60 lines=10
  4. REM 随机一行赋值给变量L
  5. seti L=(line%RANDOM:~-1%)%~f0
  6. REM 显示变量L的值,即被随机的行
  7. echo;%L%
  8. pause>NUL
  9. exit
  10.   
复制代码





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