помогите создать батник с рандомом

Кто может создать батник требовиние токие

-есть папка C:\test\in в ней 50 фаилов

-рандомно копировать с папки C:\test\in 3 фаила в папку C:\test\out


Ответы (1 шт):

Автор решения: benderje

Мне видится что-то такое (комментарии потрите - в .bat они иначе пишутся):

@echo off
chcp 855
SETLOCAL EnableDelayedExpansion

set sourceFolder=C:\Folder1 // "папка, откуда будем копировать"
set destFolder=C:\Folder2   // "папка, куда будем копировать"
set counter=0
set filesToCopy=3           // "на самом деле, количество скидываемых зависит от последнего цикла, но тут тоже нужно указать"
set /a filesInFolder=50+1   // "количество файлов + 1"

for /L %%i in (1,1,%filesToCopy%) do (set /a rndm=!filesInFolder!*!random!/32768>nul
    if !rndm! EQU 0 (set /a rndm+=1)  // "не надо нам копировать 0 файлов..."
    set file%%i=!rndm!)

cd %sourceFolder%
for %%j in (*) do (set /a counter=!counter!+1>nul
    if !counter! EQU %file1% (xcopy "%%j" "%destFolder%" /d /g /r /k /y)
    if !counter! EQU %file2% (xcopy "%%j" "%destFolder%" /d /g /r /k /y)
    if !counter! EQU %file3% (xcopy "%%j" "%destFolder%" /d /g /r /k /y)
    // "и вот тут будут добавляться строки для file4, file5 и т.д."

)

pause

Недостаток .bat в том, что, если надо будет больше файлов передавать, то в идеале либо в последний цикл for впихивать еще один, который просто будет перебирать цифры, либо добавлять еще больше строк. Все потому что он OR не знает. :(

Поэтому история с рандомом выглядит жутко костыльной.)

→ Ссылка