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

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

每个文本文件都是一行的。每一次随机读取一个,用type打印出来。

本帖最后由 Gin_Q 于 2019-12-11 08:55 编辑

你看这样行吗:
1)统计有多少txt文件(findstr, for等);
2)使用%random%(可以取余数)生成所要的序列号;
3)然后再打开指定序列号对应文件名.

TOP

本帖最后由 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% 运算

TOP

回复 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
复制代码
你试试!!

TOP

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

TOP

返回列表