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

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн mikzin [?]

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

Описание:
сделайте пож. код, чтобы копировать из одного места в другое N случайных файлов.
есть начальный код, но работает меделенно, зараза:
Код: AutoIt [Выделить]
#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
 


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

Русское сообщество AutoIt


Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2880
  • Репутация: 485
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
долго это сколько?
у меня это заняло 2м30с примерно. столько же и копированием системой
копирование множества мелких файлов будет заметно дольше чем пары крупных . с учетом общего одинакового размера
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн mikzin [?]

  • Новичок
  • *
  • Сообщений: 78

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

Помечен как лучший ответ пользователем mikzin Отправлен Март 04, 2019, 14:18:59

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2880
  • Репутация: 485
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
функция Random может выдать одинаковое значение, а значит будет выбран один и тот же индекс массива. а значит один и тот же файл будет копироваться два или более раза. а значит файлов в конечной папке будет меньше
вот пример. в консоль записываются цифры, которые выпали более одного раза
Код: AutoIt [Выделить]
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

« Последнее редактирование: Март 04, 2019, 14:29:46 от joiner »

Русское сообщество AutoIt


Оффлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 916
  • Репутация: 367
    • Награды
  • Версия AutoIt: 3.3.8.1

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
18 Ответов
6694 Просмотров
Последний ответ Апрель 24, 2010, 00:48:26
от AZJIO
20 Ответов
9104 Просмотров
Последний ответ Январь 08, 2012, 12:49:19
от XpycT
5 Ответов
3897 Просмотров
Последний ответ Июнь 10, 2012, 11:38:43
от asdf8
1 Ответов
3322 Просмотров
Последний ответ Август 16, 2012, 11:59:23
от gregaz
0 Ответов
1153 Просмотров
Последний ответ Февраль 25, 2014, 10:28:18
от StarWash
5 Ответов
1852 Просмотров
Последний ответ Март 24, 2014, 17:09:22
от Koto
2 Ответов
834 Просмотров
Последний ответ Сентябрь 30, 2016, 15:11:37
от astanid
2 Ответов
436 Просмотров
Последний ответ Май 13, 2018, 17:04:33
от Бонифаций
3 Ответов
246 Просмотров
Последний ответ Ноябрь 07, 2018, 13:08:00
от hedji
2 Ответов
209 Просмотров
Последний ответ Ноябрь 18, 2018, 12:33:05
от mikzin