Что нового

Копировать несколько случайных файлов (есть, но медленно)

mikzin

Новичок
Сообщения
78
Репутация
0
Версия AutoIt: 3.4.1

Описание:
сделайте пож. код, чтобы копировать из одного места в другое N случайных файлов.
есть начальный код, но работает меделенно, зараза:
Код:
#include <file.au3>

Local $source = "d:\Music\ChillOut-Lounge\"
Local $destination = "d:\Temp\500-RandomMP3"
filedelete($destination & "\*.*")

$aFileList = _FileListToArrayRec($source, "*.mp3*", $FLTAR_FILES, $FLTAR_RECUR)

$i = 1
While $i < 501
    $iRandom = Random(1, $aFileList[0], 1)
      FileCopy($source & $aFileList[$iRandom], $destination)
      $i += 1
WEnd


Примечания:
список должен включать обязательно поддиректории, т.к. в начальной папке файлов, как таковых, нет.спасибо.
 

joiner

Модератор
Локальный модератор
Сообщения
3 036
Репутация
504
долго это сколько?
у меня это заняло 2м30с примерно. столько же и копированием системой
копирование множества мелких файлов будет заметно дольше чем пары крупных . с учетом общего одинакового размера
 
Автор
M

mikzin

Новичок
Сообщения
78
Репутация
0
хорошо, если эето норм, то ладно.
а вот почему у меня 481 файл копирует, вместо 500.. это странно :blink:
 

joiner

Модератор
Локальный модератор
Сообщения
3 036
Репутация
504
функция Random может выдать одинаковое значение, а значит будет выбран один и тот же индекс массива. а значит один и тот же файл будет копироваться два или более раза. а значит файлов в конечной папке будет меньше
вот пример. в консоль записываются цифры, которые выпали более одного раза
Код:
Local $i = 1, $n, $t
While ($i - 501)
	$n = Random(1, 500, 1)
	If $t = $n Then
		ConsoleWrite($n & @LF)
	Else
		$t = $n
	EndIf
	$i += 1
WEnd
 
Верх