首页 > 解决方案 > 如何使用批处理随机数组而不重复

问题描述

我将此批次用于随机 test1-test3 没有重复但不工作

@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
set /A "RND_TOTAL=3, FLAG_DUP=0"
set /A "RND_MIN=1, RND_MAX=3, RND_INTER=1"
for /L %%I in (1,1,%RND_TOTAL%) do (
    call :SUB %%I
    SET /A R=!RND_NUM[%%I]!
    SET LINE[1]=TEST1
    SET LINE[2]=TEST2
    SET LINE[3]=TEST2
    echo !LINE[%R%]!
    pause
)
endlocal
exit /B
:SUB
set /A "RND_COUNT=%1-1"
:LOOP
set /A "RND_NUM[%1]=!RANDOM!%%((RND_MAX-RND_MIN)/RND_INTER+1)*RND_INTER+RND_MIN"
if %FLAG_DUP% EQU 0 (
    for /L %%I in (1,1,%RND_COUNT%) do (
        if !RND_NUM[%1]! EQU !RND_NUM[%%I]! (
            goto :LOOP
        )
    )
)
exit /B

我得到以下输出:

echo off

echo off

echo off

标签: batch-filerandomcmd

解决方案


推荐阅读