如何在資料夾中選擇隨機檔案?

如何在資料夾中選擇隨機檔案?

我正在嘗試使用 Windows 命令列批次腳本(無 PowerShell)從資料夾(以及可選的子資料夾)中選擇特定類型的隨機文件,例如 *.mp4

文件完整路徑應儲存在環境變數中以供進一步使用

我怎樣才能實現這個目標?

答案1

如何在資料夾中選擇隨機檔案?

使用以下批次檔:

@echo off
setlocal
setlocal EnableDelayedExpansion
rem store the matching file names in list
dir /b *.txt /s 2> nul > files
rem count the match files
type files | find "" /v /c > tmp & set /p _count=<tmp 
rem get a random number between 0 and count-1
set /a _random=%random%*(%_count%)/32768
rem we can't skip 0 lines
if %_random% equ 0 (
  for /f "tokens=*" %%i in ('type files') do (
    set _randomfile=%%i
    echo !_randomfile!
    goto :eof
    )
) else (
  for /f "tokens=* skip=%_random%" %%i in ('type files') do (
    set _randomfile=%%i
    echo !_randomfile!
    goto :eof
    )
)

環境變數!_randomfile!將包含隨機檔案的檔案名稱。

筆記:

  • /s如果您不想匹配子資料夾中的文件,請刪除。
  • 0=< %RANDOM%<因此,如果您有多個匹配文件, 32767它將不起作用。32766

進一步閱讀

  • Windows CMD 命令列的 AZ 索引- 與 Windows cmd 行相關的所有內容的絕佳參考。
  • 尋找- 在文件中搜尋文字字串並顯示找到它的所有行。
  • 對於 /f- 根據另一個指令的結果循環指令。
  • 隨機的- Windows CMD shell 包含一個名為 的動態變量%RANDOM%,可用來產生隨機數。

相關內容