批量选择随机文本文件

时间:2016-09-17 21:28:08

标签: batch-file

是否可以使批处理文件从指定文件夹中选择一个完全随机的文本文件

并且有人可以帮助我吗?

示例 假设我有一个位于此处的文件夹:C:\ Workstation \ Jobs 在该文件夹中,一次可能有10-20个.txt文件

这里的目标是让批处理文件检查文件夹,然后选择一个随机文件并将选择的文件输出到变量

2 个答案:

答案 0 :(得分:2)

如果所述文件夹仅包含文本文件,则需要以下内容:

  • 某种数组(dir)中的文件夹内容列表
  • 计算文件数量(for loop)
  • 选择介于0和文件数量之间的随机数(%RANDOM%* amount_of_files / 32768)
  • 将匹配的文件名(在数组中)输出到您想要的变量

希望这会把你推向正确的方向: - )

来源:
http://ss64.com/nt/syntax-random.html
How to loop through files matching wildcard in batch file
Create list or arrays in Windows Batch

答案 1 :(得分:2)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f %%a IN (
 'dir /b /a-d "%sourcedir%\*.txt"^|find /i /c ".txt" '
 ) DO SET /a selection=1 + (%RANDOM% %% %%a)
FOR /f "tokens=1*delims=:" %%a IN (
 'dir /b /a-d "%sourcedir%\*.txt"^|findstr /n /i ".txt" '
 ) DO IF %%a==%selection% SET filename=%%b
ECHO selected %filename%

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

find /c计算dir命令找到的文件数,for将计数分配给%%a。然后将selection分配给1 +( randomnumber mod filecount ),给出1..filecount。

findstr /n输出dir命令找到的每个文件的名称,前缀为序号:%% a将被分配号码({}之前的标记{1}}和:文件名(除了第一个分隔符,其中delims为%%b

当行号与:匹配时,将为文件名分配找到的文件名。