我正在嘗試使用 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%
,可用來產生隨機數。