[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

有一个12行的文本,每行共有5列内容。
请问如何先随机显示某一行的某一列,按任意键后再显示该行的全部5列内容。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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


感谢各位解惑

TOP

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)([行])
复制代码
1

评分人数

TOP

  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
复制代码
3

评分人数

TOP

既然指定了行和列,那么:
  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
复制代码
2

评分人数

原创区不能发,帖子随便放

TOP

返回列表