2016-09-17 100 views
0

是否可以使批處理文件從指定文件夾中選擇一個完全隨機的文本文件批量選擇隨機文本文件

有人可以幫我做到嗎?

例如 可以說,我得到了設在這裏的文件夾:C:\工作站\作業 和該文件夾中有一次

的目標在這裏也許10-20 .txt文件是使批處理文件檢查該文件夾,然後選擇一個隨機文件和輸出已選定的文件到一個變量

+2

你會想改寫你的問題,因爲現在的答案是「是的,這是。」 – SomethingDark

+0

在那裏上述的其他文件明鏡? – YVbakker

+0

@YVbakker不會只有文本文件 – NickyGamePlays

回答

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 /cdir命令找到的文件數進行計數,for將計數值指定爲%%a。然後將selection分配給1+(隨機數 mod filecount),給出1..filecount。

findstr /n輸出由dir命令中找到的每個文件的文件名,通過前綴的序列號:%%一個將被分配的數量(:%%b文件名之前令牌(afther其中delims是第一分隔符:

當行數相匹配selection,文件名被分配發現的文件名。

+0

您的代碼只有一個問題。它似乎沒有處理空間好的文件,因此我的意思是它完全拒絕運行。 – NickyGamePlays

+0

對我來說是完美的運行,即使在文件名中有空格或目錄名中有空格也是如此。請張貼您正在使用的文件名的小樣本,並給出錯誤。 – Magoo

+0

文件名實際上是用於個人電腦的用戶名,它使這項工作如此:私人用戶Account.txt,來賓用戶Account.txt,Dave的Account.txt,Lennys Account.txt – NickyGamePlays

2

在上述文件夾中的情況下,只包含文本文件,你需要以下條件:

  • 列表某種類型的文件夾內容陣列(DIR)的
  • 計數文件的量(用於環路)
  • 挑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