View previous topic :: View next topic |
Author |
Message |
Чиполлино
Joined: 23 Dec 2017 Posts: 62 Location: Орёл
|
(Separately) Posted: Thu Mar 28, 2019 00:43 Post subject: |
|
|
Скажите, а можно сделать аналогично, но не по указанному размеру, а указанному количеству (штук) файлов, в создаваемых номерных папках?
Просто раскидать файлы по номерным папкам, например, по 10000 штук.
Формат файлов одинаковый. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 28, 2019 01:05 Post subject: |
|
|
Чиполлино
Можно, если ещё потрудиться поискать, а не лезть в первую попавшуюся тему с фразой "разнести файлы" (1-2-3, 4). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Bronseva
Joined: 15 Dec 2022 Posts: 2
|
(Separately) Posted: Thu Dec 15, 2022 22:26 Post subject: |
|
|
Flasher wrote: | А пока быстро набросал предварительный вариант с обычным перемещением: |
Благодарю, этот скрипт очень помог. Однако выполнение его протекало не вполне ожидаемым образом. Поскольку я не знаю ничего о скриптах, кроме совсем базовых вещей типа «создать кнопку и повесить на неё вот этот VBA с параметром», что именно в нём поправить, чтобы работал как предполагается, я не сообразил.
Задача:
Приблизительно 35 тысяч файлов расположены в одной папке без подкаталогов, общий размер порядка 370 Гб.
Нужно перемещением раскидать эти файлы в подпапки, которые будут создаваться здесь же.
Максимальный размер получаемой подпапки не должен превышать 4 Гб.
Как я понял, %WL "<путь получателя>" <верхний лимит размера папок в Мб> нужно использовать в параметре кнопки на панели TC, поэтому я нажал «изменить» кнопку и в поле «параметр» вбил:
Далее все файлы распределились по десяти папкам, и каждая папка весит примерно по 35-40 Гб. Я перепроверил — в скрипте идёт Sum = .Item(2) * 1048576, то есть при параметре 4000 должно получаться 4 Гб, но не 40 Гб. Переместил файлы обратно, и попробовал для проверки разместить их теперь с параметром:
К моему удивлению результат был идентичным — все файлы спокойно распределялись ровно по тем же десяти 40 Гб папкам с номерами от 0 до 9 включительно. Зашел в получившуюся подпапку с ~3500 файлами и применил тот же скрипт с той же настройкой. К моему повторному удивлению, я получил новые 10 папок, которые на этот раз имели правильный размер, укладывающийся в 4 Гб. Не имея возможности разобраться со скриптом с разбегу, я провернул данную операцию ещё девять раз и в итоге получил 90 папок, не превышающих размером 4 Гб.
Ни один файл не потерялся, задача была выполнена успешно, всё проверено несколько раз. Но недоумение осталось: либо я не понял, и в спойлере, откуда я скопировал скрипт, расположен какой-то другой скрипт, не разбрасывающий файлы по папкам заданного размера, либо я совсем не понял.
Есть определённые подозрения о появляющихся 10 папках. Каждый раз их было десять. На другом наборе данных, например 23 файла по 1-3 Гб, скрипт с теми же параметрами создаёт всё те же 10 папок и аккуратно разбрасывает файлы по всем десяти. Ещё на одном наборе данных — 293 файла на 97 Гб, размером от 1 Кб до 6 Гб — скрипт снова раскидывает всё по десяти папкам. Чувствую себя в лыжах.
Код взят без изменений из спойлера вот в шестом сообщении текущей темы и сохранён как 'названиефайла.vbs'. Моя задача успешно выполнена, но осталось любопытство — что я сделал не так, или чего не понял.
ПС. Регистрация на форуме что-то поломалась, и на gmail не приходит письмо с активацией, спам проверил, разумеется. Не смог найти списка проблем с регистрацией или ограничений, но догадался попробовать ещё и с яндекс-почты, там пришло мгновенно. Возможно что-то где-то отвалилось или если есть ограничение на провайдеров, об этом стоило бы написать в форме регистрации, сейчас этого нет. Также при ошибке регистрации предлагается «написать администратору», спешу уведомить, что без регистрации на форуме написать администратору негде и некуда, если у пользователя нет аккаунта на форуме. ICQ, наверное, не имеет смысл считать актуальным методом связи, хотя он указан у пары модераторов в профиле.
! | CaptainFlint: | Оживил ссылку.
По поводу связи с администратором: замечание справедливое, подредактировал сообщение, добавив туда email-ссылку.
Что касается gmail, то со стороны форума никаких ограничений нет. Если их сервер отказывается принимать почту, мы ничего не можем с этим поделать, равно как и с любым другим почтовым сервисом. | |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2661
|
(Separately) Posted: Fri Dec 16, 2022 17:32 Post subject: |
|
|
Bronseva
Выход из положения без правки алгоритма: увеличьте в шапке скрипта константу Num (минимальное число цифр в именах создаваемых папок) c 1 до 2 или 3 (или большего значения в зависимости от числа создаваемых папок). |
|
Back to top |
|
|
Bronseva
Joined: 15 Dec 2022 Posts: 2
|
(Separately) Posted: Fri Dec 16, 2022 19:35 Post subject: |
|
|
sa
Благодарю, на актуальном проекте проверить уже не мог, но на «кошках» работает — для упомянутого выше набора данных из 293 файлов ~97 Гб, размером от 1 Кб до 6 Гб скрипт создал 26 папок, раскидав по ним файлы в пределах задаваемого потолка в 4 Гб — %WL "%T" 4000.
Что интересно, несколько папок превышают этот размер, в случае когда перемещаемый файл имеет размер больший, чем поставленное ограничение, тогда он в папке один. В общем, скрипт для моей задачи подходит, и всё работает, насколько я могу судить. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|