Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Разнести файлы по папкам, заполняя их до заданного размера
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Чиполлино



Joined: 23 Dec 2017
Posts: 60
Location: Орёл

Post (Separately) Posted: Thu Mar 28, 2019 00:43    Post subject: Reply with quote

Скажите, а можно сделать аналогично, но не по указанному размеру, а указанному количеству (штук) файлов, в создаваемых номерных папках?
Просто раскидать файлы по номерным папкам, например, по 10000 штук.
Формат файлов одинаковый.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Mar 28, 2019 01:05    Post subject: Reply with quote

Чиполлино
Можно, если ещё потрудиться поискать, а не лезть в первую попавшуюся тему с фразой "разнести файлы" (1-2-3, 4).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Bronseva



Joined: 15 Dec 2022
Posts: 2

Post (Separately) Posted: Thu Dec 15, 2022 22:26    Post subject: Reply with quote

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, то со стороны форума никаких ограничений нет. Если их сервер отказывается принимать почту, мы ничего не можем с этим поделать, равно как и с любым другим почтовым сервисом.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2454

Post (Separately) Posted: Fri Dec 16, 2022 17:32    Post subject: Reply with quote

Bronseva
Выход из положения без правки алгоритма: увеличьте в шапке скрипта константу Num (минимальное число цифр в именах создаваемых папок) c 1 до 2 или 3 (или большего значения в зависимости от числа создаваемых папок).
Back to top
View user's profile Send private message
Bronseva



Joined: 15 Dec 2022
Posts: 2

Post (Separately) Posted: Fri Dec 16, 2022 19:35    Post subject: Reply with quote

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

Что интересно, несколько папок превышают этот размер, в случае когда перемещаемый файл имеет размер больший, чем поставленное ограничение, тогда он в папке один. В общем, скрипт для моей задачи подходит, и всё работает, насколько я могу судить.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
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