Страница 1 из 2
Разнести файлы по папкам, заполняя их до заданного размера
Добавлено: Пт ноя 03, 2017 01:47
Ostap Fender
Здравствуйте. Можете создать подобный скрипт?
Имеется Корневая папка с файлами одного формата, (размер папки иногда может достигать терабайт, поэтому и прошу помочь).
-Открываем папку в тоталкомандер в левом окне (сортировка по имени).
Задача: Распределить файлы, начиная с первого, соблюдая алфавитный порядок, по авто создаваемым папкам в правом окне, с присвоением каждой папке имени, начиная с 1 и далее по счётчику ,
с условием, что размер каждой папки не достигнет 2,0 гб, но будет максимально приближен к этому числу.
Добавлено: Ср ноя 15, 2017 17:11
Avada
Ostap Fender
И снова — замечание за нарушение
правил форума. Точки и заглавные буквы надо использовать согласно нормам русского языка, а не где вам захочется.
И уберите, пожалуйста, подпись-картинку. Новичкам не следует привлекать внимание к своим постам подобным образом, здесь этим и опытные участники форума не злоупотребляют.
Добавлено: Ср ноя 15, 2017 17:51
Flasher
Ostap Fender писал(а):размер папки иногда может достигать терабайт
А средний размер файлов какой? Если мелкий и файлов много, то лучше в эту папку вообще не заходить, если речь идёт только о первом уровне вложенности.
Ostap Fender писал(а):... соблюдая алфавитный порядок ...
с условием, что размер каждой папки не достигнет 2,0 гб, но будет максимально приближен к этому числу
А если первый файл — 1 Гб, второй — 1 Гб, третий — 1 Гб, и т. д., о какой тогда максимальной приближённости может идти речь?
Ostap Fender писал(а):выделяется следующий файл
В каком смысле "выделяется"? Может, размер для него рассчитывается? Не каждый же файл отдельно выбирать.
Ostap Fender писал(а):скрипт делает шаг назад
В этом нет смысла. Достаточно сравнивать размеры.
Добавлено: Сб ноя 18, 2017 13:26
Ostap Fender
Avada писал(а):Ostap Fender
И уберите, пожалуйста, подпись-картинку. .
Исправил.
Добавлено: Сб ноя 18, 2017 14:30
Avada
Ostap Fender
Давайте вы не будете выяснять публично отношения с модератором — это чревато очень нехорошими последствиями. Лучше на заданные вопросы дайте ответ. Что касается подписей у новичков, категорического запрета на это нет, но приемлемость той или иной подписи определяется модераторами, к мнению которых стоит прислушаться. Ваша подпись в нынешнем виде служит единственной цели — дополнительному привлечению внимания. На мой взгляд, избыточному и необоснованному.
Про оверквотинг уже предупреждалось. Упоминание вашего собственного ника в цитате однозначно никому не нужно. А помогать вам будут куда охотнее, если увидят с вашей стороны готовность следовать принятым здесь нормам, даже если некоторые из них не вызывают у вас восторга.
Добавлено: Ср ноя 29, 2017 22:17
Ostap Fender
А средний размер файлов какой? Если мелкий и файлов много, то лучше в эту папку вообще не заходить, если речь идёт только о первом уровне вложенности.
Файлы в основном маленькие, уровень вложенности первый, формат всегда один .ncw
А если первый файл — 1 Гб, второй — 1 Гб, третий — 1 Гб, и т. д., о какой тогда максимальной приближённости может идти речь?
Перепаковав сотни библиотек я с таким случаем не встречался. Теоретически возможно- но подряд - Нет.
В каком смысле "выделяется"? Может, размер для него рассчитывается? Не каждый же файл отдельно выбирать.
Я описывал как я это делаю в ручную. Изначально я просил просто разложить по папкам, а теперь пришла мысль, чтоб эти папки сразу упаковывались.
Unnks extract -это старая модель программы. новая версия называется. inNKX 1.2.1. и он именно для Тотал. являются ли архивы tar?-я не знаю, выходной формат .nkx.
https://cloud.mail.ru/home/bandicam%202 ... 27-452.avi это видео. Можно не раскладывать по папкам сразу, а делать как на видео по одному архиву. Упаковываемая папка должна называться Samples. если же Вы знаете как сразу виртуально раскидать файлы на какие то облачные подкаталоги, которых физически не будет, то плагин может паковать и в несколько потоков, при этом путями и сохранением структуры можно пренебречь. Хотя лично я это не представляю. Ведь плагину необходимы объекты упаковки. Но вы лучше понимаете.
Окончательно я бы сформулировал задачу так.
Разложить файлы по папкам второго уровня с названием Samples, размером 1,99 гб , каждая из которых должна находиться в папке, с именем начиная с номера 2, и далее с увеличением счетчика. При этом последние оставшиеся файлы должны быть помещены в папку Samples, находящуюся в папке 1.
Далее поиск папок с именем Samples, вывод их на панель, выделение всех папок Samples и упаковка сразу всех папок, с применением счетчика, согласно номера корневого каталога пакуемой папки, исключив каталоги верхнего уровня. Должно получиться Samples 1.nkx, Samples 2.nkx и т.д.
Добавлено: Чт ноя 30, 2017 02:42
Flasher
Ostap Fender писал(а):новая версия называется inNKX 1.2.1. и он именно для Тотал.
В делах скриптовых архиваторным плагинам особо ничего не светит. Поэтому нужна утилита.
Ostap Fender писал(а):архивы tar?-я не знаю, выходной формат .nkx
Так приложите парочку файликов. Как я узнаю?
Ostap Fender писал(а):если же Вы знаете как сразу виртуально раскидать файлы на какие то облачные подкаталоги, которых физически не будет, то плагин может паковать и в несколько потоков, при этом путями и сохранением структуры можно пренебречь. Хотя лично я это не представляю. Ведь плагину необходимы объекты упаковки.
Так вроде перемещение нужно было.

А виртуальный вариант - это точки повторной обработки, симлинки или жёсткие ссылки. К перемещению это не относится, так как нужны источники. Но при создании архивов и это может не понадобиться, если упаковщик позволяет добавлять в архив файлы в заданные подпапки. Только в данном случае уже я не представляю, какой смысл в пренебрежении ими.
А пока быстро набросал предварительный вариант с обычным перемещением:
Код: Выделить всё
'================================ VBS =================================
' Перемещение выбранных файлов в создаваемые папки с номерными именами,
' разбивая их по группам в рамках заданного лимита суммарного размера
' Параметры: %WL "<путь получателя>" <верхний лимит размера папок в Мб>
' Ключ добавки цепочки подкаталогов: /chain:<цепочка>
' Ключ смены начала счётчика с единицы на двойку: /2
' Примеры: %WL "%T" 100
' %WL "%P" 1000 /2
' %WL "%T" 2000 /chain:NewFolder
' %WL "%P" 4000 /chain:"Folder 1\Folder 2\Folder 3" /2
Option Explicit
'========= Минимальное число цифр в именах создаваемых папок ==========
Const Num = 1
'======================================================================
Dim C, i, Chain, List, Targ, Sum, FSO, oDisk, F, Size, Folder
With WSH.Arguments
If .UnNamed.Count = 0 Then WSH.Quit
If .Named.Exists("2") Then i = 2 Else i = 1
List = .Item(0) : Targ = .Item(1) : Sum = .Item(2) * 1048576
If .Named.Exists("chain") Then Chain = "" & .Named("chain")
End With: Set FSO = CreateObject("Scripting.FileSystemObject")
Set oDisk = CreateObject("Shell.Application").NameSpace(FSO.GetDriveName(Targ))
With FSO.OpenTextFile(List,,,-1)
Do : F = Trim(.ReadLine)
If FSO.FileExists(F) Then
Set F = FSO.GetFile(F) : Size = Size + F.Size
If Size >= Sum Then Size = F.Size : i = i + 1
If Size = F.Size Then _
Folder = FSO.BuildPath(Targ, Right(String(Num - 1,"0") &_
i, Num)) & Chain : oDisk.NewFolder Mid(Folder, 4)
F.Move Folder & ""
End If
Loop Until .AtEndOfStream : .Close
End With
MsgBox Space(18) & " Выполнено!", 4160,_
" Полимитное перемещение файлов в номерные папки "
P. S.: Очень советую не игнорировать
ЦУ.
Добавлено: Чт ноя 30, 2017 10:30
Ostap Fender
Так приложите парочку файликов. Как я узнаю?
Пара архивов:
https://cloud.mail.ru/public/FTYN/7MpmJVpHC
https://cloud.mail.ru/public/LLUE/cpQT4iKaF
Плагин inNKX 1.2.1.
https://cloud.mail.ru/public/3XeZ/gvUa3pize
Так вроде перемещение нужно было ?
Хорошая мысля приходит опосля.
А пока быстро набросал предварительный вариант с обычным перемещением:
Спасибо.
Разобрался. Самое важное, что 1,99 гб это вовсе не 1990 мб, а 2038,9999999999 мб, я забыл просто.
Добавлено: Чт ноя 30, 2017 20:44
Avada
Ostap Fender
Ещё раз: заглавные буквы и точки в концах слов ставятся везде, а не выборочно по желанию. Вы не в чате, и это прямое нарушние
правил форума.
Добавлено: Чт ноя 30, 2017 20:59
Flasher
Ostap Fender
Увы, но это не tar. Плагин у меня был. Гугл всё ещё работает. Про непригодность его использования в скриптах я писал выше.
Ostap Fender писал(а):Самое важное, что 1,99 гб это вовсе не 1990 мб
А при чём тут 1990? В исходном посте речь шла о 2Гб, что в переводе 2048 Мб. Вот их и надо писать в параметр.
Добавлено: Чт ноя 30, 2017 21:24
Ostap Fender
Flasher писал(а):В исходном посте речь шла о 2Гб, что в переводе 2048 Мб. Вот их и надо писать в параметр.
О размере, максимально приближенном к 2 гб, но не в коем случае его не достигающем. Спасибо Вам огромное!!! Кнопка пашет на ура. Вы мне облегчили жизнь. 53 гб раскидала по папкам за тройку минут. Жаль, что я не обратился к вам, когда паковал размер 220 гб. А по поводу ошибок в написании - я исправлюсь.(Это я модераторам) Хотя по моему на сайте слишком маленькое окно, и отображаемый шрифт, где сообщения пишут.
Добавлено: Чт ноя 30, 2017 21:31
Flasher
Ostap Fender
Я прекрасно понял то, о чём написано в исходном посте. В параметре задаётся не максимальный предел, а уже недопустимый. Т.е. при достижении суммы в 2048 Мб (2147483648 байт) файл пойдёт в новую папку. При сумме в 2147483647 байт файл останется в текущей.
Пож-та.
Добавлено: Чт ноя 30, 2017 22:09
Ostap Fender
Flasher писал(а):Пож-та.
Какую дать маску в этом случае для массового архивирования?
Добавлено: Чт ноя 30, 2017 22:48
Flasher
Ostap Fender
Маска ничего не решает.
Добавлено: Сб дек 02, 2017 20:57
Ostap Fender
Flasher писал(а):Маска ничего не решает.
Понял.