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

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

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

求救 如何用批处理在一个文本里随机提取一行文字并显示出来 (如果文本里含有空格,希望显示来是一行文字 不是空白)
1

评分人数

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

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

TOP

谢谢 非常合服要求    以后可以随时添加文字进去 

TOP

回复 3# yaose


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。

TOP

回复 2# group


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

TOP

文本要是固定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
复制代码

TOP

回复 6# group


    还有 在指定范围数字里机选  数字   例如  1到1200  从中 随机选数  批处理 怎么做

TOP

回复 7# yaose


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

评分人数

    • yaose: 谢谢 我没有分了 只能说谢谢技术 + 1

TOP

谢谢 大家的帮助

TOP

谢谢

TOP

回复 8# CrLf


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

TOP

返回列表