You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理循环中RANDOM函数失效求助:启用延迟扩展仍输出相同值

解决FOR循环中RANDOM值固定的问题

你的问题出在随机数生成的位置——TrackNumber是在FOR循环外部定义的,只会生成一次随机值,循环过程中不会重新计算,所以每次输出都是同一个数。

把随机数生成语句移到FOR循环内部,就能让每次循环都生成新的随机数:

setlocal EnableDelayedExpansion

FOR /F "tokens=*" %%G IN ('dir /b *.mp4') DO (
    set /A TrackNumber=!RANDOM! %% 3 + 1
    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
)

补充说明

  • 延迟扩展EnableDelayedExpansion已经正确启用,循环内部用!RANDOM!和!TrackNumber!可以实时读取变量的最新值。
  • 每次进入循环体重新执行set /A TrackNumber=!RANDOM! %% 3 + 1,会生成1-3之间的新随机数,实现循环内的随机效果。

内容的提问来源于stack exchange,提问作者Axl Alert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:30:58