Board logo

标题: [文本处理] [已解决]求救 如何用批处理在一个文本里随机提取一行文字并显示出来 [打印本页]

作者: yaose    时间: 2013-2-24 23:58     标题: [已解决]求救 如何用批处理在一个文本里随机提取一行文字并显示出来

本帖最后由 yaose 于 2013-3-12 10:10 编辑

求救 如何用批处理在一个文本里随机提取一行文字并显示出来 (如果文本里含有空格,希望显示来是一行文字 不是空白)
作者: group    时间: 2013-2-25 01:46

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set /a n+=1
  5.    set ar[!n!]=%%a
  6. )
  7. set /a r=!random!%%n+1
  8. echo !ar[%r%]!
  9. pause
复制代码

作者: yaose    时间: 2013-2-25 23:25

谢谢 非常合服要求    以后可以随时添加文字进去 
作者: BAT-VBS    时间: 2013-2-26 13:04

回复 3# yaose


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: yaose    时间: 2013-2-28 21:16

回复 2# group


    %random% 用这个随机函数 但这个随机1到99时前面有0的 在文本取值会失败的 如001 088 048  069 008 这样的随机数 请问怎么可以去掉前面的0呢 变为1 88 48 69 8
作者: group    时间: 2013-3-1 00:26

文本要是固定3位可以这样
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set /a n+=1
  5.    set /a ar[!n!]=1%%a-1000
  6. )
  7. set /a r=!random!%%n+1
  8. echo !ar[%r%]!
  9. pause
复制代码
如果文本不存在为0的行可以这样
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=* delims=0" %%a in (a.txt) do (
  4.    set /a n+=1
  5.    set ar[!n!]=%%a
  6. )
  7. set /a r=!random!%%n+1
  8. echo !ar[%r%]!
  9. pause
复制代码
不然可以这样,最通用了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set /a n+=1
  5.    set ar[!n!]=0
  6.    for /f "tokens=* delims=0" %%b in ("%%a") do set ar[!n!]=%%b
  7. )
  8. set /a r=!random!%%n+1
  9. echo !ar[%r%]!
  10. pause
复制代码

作者: yaose    时间: 2013-3-8 10:41

回复 6# group


    还有 在指定范围数字里机选  数字   例如  1到1200  从中 随机选数  批处理 怎么做
作者: CrLf    时间: 2013-3-8 15:33

回复 7# yaose


    举个例子:
  1. set /a 随机数=%random% %% 1200 +1
  2. echo %随机数%
  3. pause
复制代码

作者: yaose    时间: 2013-3-12 10:11

谢谢 大家的帮助
作者: yaose    时间: 2013-3-14 09:43

谢谢
作者: yaose    时间: 2013-3-18 07:19

回复 8# CrLf


    那么 如何 在指定的范围数里机选 120-1200




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