标题: [文本处理] 如何随机读取文件夹下面的文本文件 [打印本页]
作者: netdzb 时间: 2019-12-11 07:56 标题: 如何随机读取文件夹下面的文本文件
每个文本文件都是一行的。每一次随机读取一个,用type打印出来。
作者: Gin_Q 时间: 2019-12-11 08:46
本帖最后由 Gin_Q 于 2019-12-11 08:55 编辑
你看这样行吗:
1)统计有多少txt文件(findstr, for等);
2)使用%random%(可以取余数)生成所要的序列号;
3)然后再打开指定序列号对应文件名.
作者: netdzb 时间: 2019-12-11 09:27
本帖最后由 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% 运算
作者: Gin_Q 时间: 2019-12-11 10:13
回复 3# netdzb - @echo off & setlocal enabledelayedexpansion & rem title by author Gan
- set "t_path=E:\123\"
- set /a count = 0
- ::搜索的%t_path%目录下所有的txt文件
- for /f %%a in ('where /f /r %t_path% "*.txt"') do (set "count_file_!count!=%%a" & set /a count+=1)
-
- ::生成小于txt文件总数的随机数(效率和文件数成反比)
- ::优化好了发出来看看
- echo;正在打开随机文件请稍后...
- echo;
- :loop
- set /a temp = 1
- for /l %%a in (1,1,%temp%) do (set /a ran = %random%
- if !ran! leq %count% goto :break1
- goto :loop)
-
- :break1
- type !count_file_%ran%!
-
- pause
复制代码
你试试!!
作者: terse 时间: 2019-12-11 11:00
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /a-d d:\tese\*.txt') do (
- set /an+=1
- set _!n!=%%i
- )
- set /a r=!random!%%n+1
- type "!_%r%!"
- pause
复制代码
powershell- gc(ls "d:\tese\*.txt"|Get-Random)
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |