Board logo

标题: [文本处理] 【已解决】批处理如何随机显示文本中任意一行的任意一列? [打印本页]

作者: taofan712    时间: 2017-7-8 23:03     标题: 【已解决】批处理如何随机显示文本中任意一行的任意一列?

本帖最后由 taofan712 于 2017-7-9 19:17 编辑

有一个12行的文本,每行共有5列内容。
请问如何先随机显示某一行的某一列,按任意键后再显示该行的全部5列内容。
作者: a2002    时间: 2017-7-9 12:05

既然指定了行和列,那么:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a i=0,j=0
  3. for /f "tokens=1-5 delims= " %%A in (test.txt) do (
  4. set "s_!j!=%%A %%B %%C %%D %%E"&set /a j+=1
  5. for %%# in (%%A %%B %%C %%D %%E) do set r_!i!=%%#&set /a i+=1
  6. )
  7. set /a r=!random!%%60,_r=r/5
  8. echo !r_%r%!&pause
  9. echo !s_%_r%!&pause
复制代码

作者: qazplm    时间: 2017-7-9 12:20

  1. @echo off
  2. set /a n=%random% %% 12,m=%random% %% 5+1,t=n+1
  3. echo;%t%行 %m%列
  4. for /f "delims=" %%a in ('more +%n% "文本.txt"') do (
  5.     for /f "tokens=%m%" %%b in ("%%a") do echo;%%b
  6.     pause
  7.     echo;%%a
  8.     goto end
  9. )
  10. :end
  11. pause>nul
复制代码

作者: 老刘1号    时间: 2017-7-9 14:09

VBS
  1. Rem Code BY 老刘
  2. Rem 文本换行标记必须为CrLf
  3. [文本内容] = CreateObject("scripting.FilesystemObject").getfile(".\1.txt").OpenAsTextStream.Readall
  4. Randomize : [行] = fix(rnd*12) : [列] = fix(rnd*5) '由于数组从0开始,所以无需加1,得到0也正常
  5. Msgbox Split(split([文本内容],VbCrlf)([行]))([列])&Vbcrlf&split([文本内容],VbCrlf)([行])
复制代码

作者: taofan712    时间: 2017-7-9 19:17

回复 2# a2002
回复 3# qazplm
回复 4# 老刘1号


感谢各位解惑




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