正如标题所说,我正在尝试从一个文件夹中选择最多四个随机文件(壁纸),以进行进一步处理。该文件夹不包含子文件夹,只有 *.jpg's、*.bmp's 和 *.png's(它可能包含 Thumbs.db 文件,但我已经处理好了)。
我读了所有用for
循环的文件,制作类似于数组的文件,然后我想运行另一个for
循环以制作将作为选择文件的索引的随机数。
setlocal enabledelayedexpansion
set "wps=1 2 3 4"
set /a ind = 0
for /f "tokens=* delims=" %%g in ('dir C:\Wallpapers /a:-h-s /b /s') do (
set /a ind += 1
set "!ind!=%%g"
)
for %%g in (%wps%) do (
set /a "num = (((!random! & 1) * 1073741824) + (!random! * 32768) + !random!) %% %ind% + 1"
echo Wallpaper %%g is #!num! - Title: "!!num!!"
)
当然,回显的行只是输出Wallpaper 1 is #118 - Title: "118"
而不是Wallpaper 1 is #118 - Title: "C:\Wallpapers\Miami Skyline.jpg"
.
所以我的具体问题是:如何在for
循环内双重扩展变量?
[注#1:创建随机数的行需要很长,因为它提供了良好的随机值分布]
[注#2:我需要wps
这样存储,因为有时我可能只需要三张壁纸,而不是必须按数字顺序]