タイトルが示すように、さらに処理するために、フォルダーから最大 4 つのランダムなファイル (壁紙) を選択しようとしています。フォルダーにはサブフォルダーは含まれず、*.jpg、*.bmp、および *.png のみです ( 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
そのように保存する必要があります。必然的に番号順に]