是否可以使批處理文件從指定文件夾中選擇一個完全隨機的文本文件批量選擇隨機文本文件
有人可以幫我做到嗎?
例如 可以說,我得到了設在這裏的文件夾:C:\工作站\作業 和該文件夾中有一次
的目標在這裏也許10-20 .txt文件是使批處理文件檢查該文件夾,然後選擇一個隨機文件和輸出已選定的文件到一個變量
是否可以使批處理文件從指定文件夾中選擇一個完全隨機的文本文件批量選擇隨機文本文件
有人可以幫我做到嗎?
例如 可以說,我得到了設在這裏的文件夾:C:\工作站\作業 和該文件夾中有一次
的目標在這裏也許10-20 .txt文件是使批處理文件檢查該文件夾,然後選擇一個隨機文件和輸出已選定的文件到一個變量
@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+(隨機數 mod filecount),給出1..filecount。
findstr /n
輸出由dir
命令中找到的每個文件的文件名,通過前綴的序列號:%%一個將被分配的數量(:
和%%b
文件名之前令牌(afther其中delims是第一分隔符:
)
當行數相匹配selection
,文件名被分配發現的文件名。
您的代碼只有一個問題。它似乎沒有處理空間好的文件,因此我的意思是它完全拒絕運行。 – NickyGamePlays
對我來說是完美的運行,即使在文件名中有空格或目錄名中有空格也是如此。請張貼您正在使用的文件名的小樣本,並給出錯誤。 – Magoo
文件名實際上是用於個人電腦的用戶名,它使這項工作如此:私人用戶Account.txt,來賓用戶Account.txt,Dave的Account.txt,Lennys Account.txt – NickyGamePlays
在上述文件夾中的情況下,只包含文本文件,你需要以下條件:
希望這會使你在正確的方向:-)
來源變量:
http://ss64.com/nt/syntax-random.html
How to loop through files matching wildcard in batch file
Create list or arrays in Windows Batch
你會想改寫你的問題,因爲現在的答案是「是的,這是。」 – SomethingDark
在那裏上述的其他文件明鏡? – YVbakker
@YVbakker不會只有文本文件 – NickyGamePlays