為了解決這個問題,我絞盡腦汁,花了兩個多小時,但我還是不明白這是怎么一回事。
這段代碼應該是遍歷當前腳本檔案夾內的所有PNG,并將其放入Folder1陣列。
然后我需要在一個回圈中隨機生成數字,從陣列中隨機挑選照片,并回傳照片檔案名。
謝謝你的幫助。
echo
cls
setlocal enableDelayedExpansion
設定/a photos=1
for %%G in (*.png) do (set folder1[! photos!]=%%~G
設定 /a photos =1 )
設定總產出=2
for /l %x in (1, 1, %totaloutput%) do (
設定/a "_rand=(%RANDOM% * 20 /32768) 1"
echo _rand is !_rand1!
echo folder1是"!folder1[%%_rand]!"
echo folder1 is "!folder1[%_rand%]!"
echo folder1 is %folder1[!_rand!]%!
)
最終代碼:
echo off
cls
setlocal enableDelayedExpansion
設定/a photos=1
for %%G in (*.png) do (
設定檔案夾1[!photos!]=%%~G
設定 /a photos =1 )
設定總產出=10
for /l %x in (1, 1, %totaloutput%) do (
設定/a "_rand=(!RANDOM! * (%photos%-1) /32768) 1"
echo _rand is !_rand!
FOR %G IN ("!_rand!") DO echo folder1 is "! folder1[%%~G]!"
)
輸出示例:
_rand是2
folder1是 "b2.png"
_rand是6
folder1是 "b6.png"。
蘭特是3
檔案夾1是 "b3.png"。
誤差為3
檔案夾1是 "b3.png"。
濕度是5
檔案夾1是 "b5.png"。
符號是6
檔案夾1是 "b6.png"。
蘭特是2
檔案夾1是 "b2.png"。
蘭特是3
檔案夾1是 "b3.png"。
濕度是3
檔案夾1是 "b3.png"。
蘭特是6
folder1是 "b6.png"。
uj5u.com熱心網友回復:
你的代碼有幾個問題。
你需要用RANDOM變數來進行延遲擴展。 除非你這樣做,否則每次迭代的輸出都是一樣的。隨機計算也應該使用你的檔案數,否則你將被限制在你現有代碼中的前20個檔案。 所以這一行應該改為這樣。
set /a "_rand=(!RANDOM! * %photos% /32768) 1"
因為你在一個括號內的代碼塊中,你基本上需要做兩層擴展來獲得陣列的值。你有兩個選擇來做到這一點。
CALL方法
CALL echo folder1 is "%%folder1[!_rand!]%%"
為元變數。
為元變數。
FOR %%G IN ("!_rand!") DO echo folder1 is "! folder1[%%~G]!"
編輯。 你的代碼中還有一個錯誤。如果目錄中有一個檔案,你的檔案數將是兩個。你需要在創建陣列變數之前將該變數初始化為零,并將其添加為一。
set /a photos=0
for %%G in (*.png) do (
設定/a photos =1
set folder1[!photos!]=%%~G
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/315739.html
標籤:
上一篇:在ffmpeg中得到一個錯誤"為"刻度"過濾器指定了太多的輸入"。
下一篇:我以后可以推匯出模板論證嗎?
