找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22125|回复: 4

[文本处理] 如何随机读取文件夹下面的文本文件

[复制链接]
发表于 2019-12-11 07:56:24 | 显示全部楼层 |阅读模式
每个文本文件都是一行的。每一次随机读取一个,用type打印出来。
发表于 2019-12-11 08:46:59 | 显示全部楼层
本帖最后由 Gin_Q 于 2019-12-11 08:55 编辑

你看这样行吗:
1)统计有多少txt文件(findstr, for等);
2)使用%random%(可以取余数)生成所要的序列号;
3)然后再打开指定序列号对应文件名.
 楼主| 发表于 2019-12-11 09:27:02 | 显示全部楼层
本帖最后由 netdzb 于 2019-12-11 09:52 编辑

回复 2# Gin_Q


  文本的文件名需要改吗?
这个random函数里面可以是变量吗?

@echo off
@setlocal ENABLEDELAYEDEXPANSION
@set num=0
@for /f "delims=" %%i in ('dir %1 /a-d /b /s') do @set /a num+=1
@echo %1中共有%num%个文件

比如这样,然后random %num% 运算
发表于 2019-12-11 10:13:43 | 显示全部楼层
回复 3# netdzb
  1. @echo off & setlocal enabledelayedexpansion & rem title by author Gan
  2. set "t_path=E:\123"
  3. set /a count = 0
  4. ::搜索的%t_path%目录下所有的txt文件
  5. for /f %%a in ('where /f /r %t_path% "*.txt"') do (set "count_file_!count!=%%a" & set /a count+=1)

  6. ::生成小于txt文件总数的随机数(效率和文件数成反比)
  7. ::优化好了发出来看看
  8. echo;正在打开随机文件请稍后...
  9. echo;
  10. :loop
  11. set /a temp = 1
  12. for /l %%a in (1,1,%temp%) do (set /a ran = %random%
  13.         if !ran! leq %count% goto :break1
  14.         goto :loop)

  15. :break1
  16. type !count_file_%ran%!

  17. pause
复制代码
你试试!!
发表于 2019-12-11 11:00:16 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /s /a-d d:\tese\*.txt') do (
  3.      set /an+=1
  4.      set _!n!=%%i
  5. )
  6. set /a r=!random!%%n+1
  7. type "!_%r%!"
  8. pause
复制代码
powershell
  1. gc(ls "d:\tese\*.txt"|Get-Random)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:32 , Processed in 0.026539 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表