помогите создать батник с рандомом
Кто может создать батник требовиние токие
-есть папка 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 не знает. :(
Поэтому история с рандомом выглядит жутко костыльной.)