Разнести файлы по папкам, заполняя их до заданного размера
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2  :| |:
Total Commander -> Автоматизация Total Commander

#16:  Author: ЧиполлиноLocation: Орёл PostPosted: Thu Mar 28, 2019 00:43
    —
Скажите, а можно сделать аналогично, но не по указанному размеру, а указанному количеству (штук) файлов, в создаваемых номерных папках?
Просто раскидать файлы по номерным папкам, например, по 10000 штук.
Формат файлов одинаковый.

#17:  Author: FlasherLocation: Москва PostPosted: Thu Mar 28, 2019 01:05
    —
Чиполлино
Можно, если ещё потрудиться поискать, а не лезть в первую попавшуюся тему с фразой "разнести файлы" (1-2-3, 4).

#18:  Author: Bronseva PostPosted: Thu Dec 15, 2022 22:26
    —
Flasher wrote:
А пока быстро набросал предварительный вариант с обычным перемещением:

Благодарю, этот скрипт очень помог. Однако выполнение его протекало не вполне ожидаемым образом. Поскольку я не знаю ничего о скриптах, кроме совсем базовых вещей типа «создать кнопку и повесить на неё вот этот VBA с параметром», что именно в нём поправить, чтобы работал как предполагается, я не сообразил.

Задача:
Приблизительно 35 тысяч файлов расположены в одной папке без подкаталогов, общий размер порядка 370 Гб.
Нужно перемещением раскидать эти файлы в подпапки, которые будут создаваться здесь же.
Максимальный размер получаемой подпапки не должен превышать 4 Гб.

Как я понял, %WL "<путь получателя>" <верхний лимит размера папок в Мб> нужно использовать в параметре кнопки на панели TC, поэтому я нажал «изменить» кнопку и в поле «параметр» вбил:
Code:
%WL "%T" 4000

Далее все файлы распределились по десяти папкам, и каждая папка весит примерно по 35-40 Гб. Я перепроверил — в скрипте идёт Sum = .Item(2) * 1048576, то есть при параметре 4000 должно получаться 4 Гб, но не 40 Гб. Переместил файлы обратно, и попробовал для проверки разместить их теперь с параметром:
Code:
%WL "%T" 400

К моему удивлению результат был идентичным — все файлы спокойно распределялись ровно по тем же десяти 40 Гб папкам с номерами от 0 до 9 включительно. Зашел в получившуюся подпапку с ~3500 файлами и применил тот же скрипт с той же настройкой. К моему повторному удивлению, я получил новые 10 папок, которые на этот раз имели правильный размер, укладывающийся в 4 Гб. Не имея возможности разобраться со скриптом с разбегу, я провернул данную операцию ещё девять раз и в итоге получил 90 папок, не превышающих размером 4 Гб.

Ни один файл не потерялся, задача была выполнена успешно, всё проверено несколько раз. Но недоумение осталось: либо я не понял, и в спойлере, откуда я скопировал скрипт, расположен какой-то другой скрипт, не разбрасывающий файлы по папкам заданного размера, либо я совсем не понял.

Есть определённые подозрения о появляющихся 10 папках. Каждый раз их было десять. На другом наборе данных, например 23 файла по 1-3 Гб, скрипт с теми же параметрами создаёт всё те же 10 папок и аккуратно разбрасывает файлы по всем десяти. Ещё на одном наборе данных — 293 файла на 97 Гб, размером от 1 Кб до 6 Гб — скрипт снова раскидывает всё по десяти папкам. Чувствую себя в лыжах.

Код взят без изменений из спойлера вот в шестом сообщении текущей темы и сохранён как 'названиефайла.vbs'. Моя задача успешно выполнена, но осталось любопытство — что я сделал не так, или чего не понял.

ПС. Регистрация на форуме что-то поломалась, и на gmail не приходит письмо с активацией, спам проверил, разумеется. Не смог найти списка проблем с регистрацией или ограничений, но догадался попробовать ещё и с яндекс-почты, там пришло мгновенно. Возможно что-то где-то отвалилось или если есть ограничение на провайдеров, об этом стоило бы написать в форме регистрации, сейчас этого нет. Также при ошибке регистрации предлагается «написать администратору», спешу уведомить, что без регистрации на форуме написать администратору негде и некуда, если у пользователя нет аккаунта на форуме. ICQ, наверное, не имеет смысл считать актуальным методом связи, хотя он указан у пары модераторов в профиле.

 !  CaptainFlint:
Оживил ссылку.
По поводу связи с администратором: замечание справедливое, подредактировал сообщение, добавив туда email-ссылку.
Что касается gmail, то со стороны форума никаких ограничений нет. Если их сервер отказывается принимать почту, мы ничего не можем с этим поделать, равно как и с любым другим почтовым сервисом.

#19:  Author: sa PostPosted: Fri Dec 16, 2022 17:32
    —
Bronseva
Выход из положения без правки алгоритма: увеличьте в шапке скрипта константу Num (минимальное число цифр в именах создаваемых папок) c 1 до 2 или 3 (или большего значения в зависимости от числа создаваемых папок).

#20:  Author: Bronseva PostPosted: Fri Dec 16, 2022 19:35
    —
sa
Благодарю, на актуальном проекте проверить уже не мог, но на «кошках» работает — для упомянутого выше набора данных из 293 файлов ~97 Гб, размером от 1 Кб до 6 Гб скрипт создал 26 папок, раскидав по ним файлы в пределах задаваемого потолка в 4 Гб — %WL "%T" 4000.

Что интересно, несколько папок превышают этот размер, в случае когда перемещаемый файл имеет размер больший, чем поставленное ограничение, тогда он в папке один. В общем, скрипт для моей задачи подходит, и всё работает, насколько я могу судить.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2  :| |:
Page 2 of 2

Powered by phpBB © 2001, 2005 phpBB Group