Что нового

Random - копирование массива случайных файлов

mikzin

Новичок
Сообщения
80
Репутация
0
доброго дня,

застрял на попытке скопировать 50 случайных файлов:
Код:
#include <file.au3>
$source = "c:\Users\Dmitry\AppData\Roaming\Kodi\addons\visualization.milkdrop2\Milkdrop2\presets\"
$destination = "c:\Program Files (x86)\foobar2000\winamp\plugins\milkdrop2\presets"
filedelete($destination & "\*.milk")
$aFileList = _FileListToArray($source, "*.milk", 1)
$iRandom = Random(1, $aFileList[0], 1)
 For $i = 1 To $aFileList[0]
 FileCopy($source & $aFileList[$iRandom],  $destination)
 next


так копирует один файл.
пробовал и такой вариант:

Код:
$i = 0
Do
$i = $i + 1
FileCopy($source & $aFileList[$iRandom],  $destination)
Until $i = 50

копирует только первых 50, а не случайные.
как правильно?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Ваша ошибка в том, что вы выполняли случайную выборку файла один раз вне цикла, вот и перезаписывали 50 раз один и тот же файл, плюс нужно ведь проверять, что Вы не выберете случайно несколько раз один и тот-же файл, например так :
Код:
#include <file.au3>
$source = "c:\Users\Dmitry\AppData\Roaming\Kodi\addons\visualization.milkdrop2\Milkdrop2\presets\"
$destination = "c:\Program Files (x86)\foobar2000\winamp\plugins\milkdrop2\presets"
FileDelete($destination & "\*.milk")
$aFileList = _FileListToArray($source, "*.milk", 1)
$i = 1
While $i < 51
	$iRandom = Random(1, $aFileList[0], 1)
	If Not FileExists($aFileList[$iRandom]) Then
		FileCopy($source & $aFileList[$iRandom], $destination)
		$i += 1
	EndIf
WEnd
Желательно проверять количество файлов $aFileList , так как если оно будет близко к 51 , то скрипт может долго отрабатывать, а если меньше , то уйдёт в вечный цикл.
 
Верх