為什么它不能在我的代碼中隨機作業?我寫了setlocal EnableDelayedExpansion。但在回圈中,隨機仍然不起作用。繼續給相同的號碼
setlocal EnableDelayedExpansion
set /A TrackNumber=!RANDOM! %% 3 1
FOR /F "tokens=*" %%G IN ('dir /b *.mp4') DO (
echo !TrackNumber!
ffmpeg -i "%%G" -i !TrackNumber!.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -ac 2 -shortest .%%~nG.mp4
)
uj5u.com熱心網友回復:
我認為即使延遲它也不會遞回擴展。即使可以,您也是在啟用延遲擴展set /A TrackNumber=!RANDOM! ... 之后執行的,因此 TrackNumber 僅以數字開頭,而不是 string !RANDOM!。
您可以每次在回圈內更新變數:
@echo off
setlocal EnableDelayedExpansion
for /L %%a in (0,1,9) do (
set /A TrackNumber=!RANDOM! %% 42 1
echo Test#%%a: !TrackNumber!
)
如果由于某種原因您需要將運算式保留在回圈之外:
@echo off
set TrackNumberExpr=%%random%% %%%% 42 1
setlocal EnableDelayedExpansion
for /L %%a in (0,1,3) do (
call set /A TrackNumber=!TrackNumberExpr!
echo Test#%%a: !TrackNumber!
)
for /L %%a in (0,1,3) do (
call set /A TrackNumber=!TrackNumberExpr!
echo Test#%%a: !TrackNumber!
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515739.html
