Страница 45 из 52
Добавлено: Ср апр 03, 2019 00:02
Flasher
shadow_405
Тогда не уходите от вопросов. Я их не просто так задаю. "Идеальный" вариант возможен при наличии сравнительного алгоритма, чтобы определять к каким номерам и сколько прибавлять, понимая, что эти группы не статичны.
Добавлено: Ср апр 03, 2019 07:51
Avada
Flasher
Он не уходит от вопросов, он их не понимает. Хотя самому ему явно кажется, что всё тут ясно и что его решения — одно лучше другого.
shadow_405
Приращение чисел в именах файлов должно выполняться не от нечего делать, а по вполне рельной причине, не так ли? В одном из предыдущих постов эта причина между делом называлась: появление "где-то в начале списка" новых объектов, в связи с чем надо подогнать далее старую нумерацию. Так "где-то" или "в начале"? Допустим — в начале. (Оставляем пока в стороне вопрос, действительно ли эти объекты все попадают при текущей сортировке TC в начало списка — пусть даже это так.) В этом случае оптимальным было бы полное снятие прежних чисел-счётчиков с последующей заменой сквозной правильной нумерацией. Однако ничего не сказано, например, о том, надо ли добавлять нумерацию к новым объектам согласно их текущему местоположению. К тому же "номера картинок идут не подряд"...
Автоматизация тут нужна безусловно. Только не надо пытаться предлагать якобы готовые решения (как правило, в таких случаях либо ненужные, либо неправильные). От вас требовалось грамотно сформулировать задачу, включив в пример (обязательно!) новый объект и показав, как будет выглядеть при этом список до и после обработки (для этого пятистрочного списка достаточно). И пояснив, конечно, куда на самом деле будут добавляться новые файлы: только в начало? куда угодно? с какими исходными именами? Давайте конкретику, а то эта дискуссия уже неприлично затянулась без всякого толку.
О решении, если оно возможно, будут думать другие. А ваши придумки про статическое приращение чисел на столько-то после стольких-то файлов пока что с задачей попросту не сопрягаются и ничуть не "идеальны".
И нескромный вопрос: вы в Total Commander вообще работаете и с общими принципами построения там файловых списков, их сортировки и переименования хоть в первом приближении знакомы? А то, знаете ли, обучать своего знакомого следует тому, в чём сами разбираетесь...
Добавлено: Ср апр 03, 2019 15:30
shadow_405
Flasher, Avada
Не ухожу, просто такая задача, скорее всего, будет возникать много раз. И каждый раз нужно будет увеличивать на разную величину номер в названии разного количества файлов.
Был бы идеален вариант команды типа "в названии файлов 17-153 увеличить номер на 1; 154-180 - на 2; 181-600 - на 3". Но при этом должна быть возможность менять эти диапазоны и их количество.
Насчёт причины я имел в виду не это. Новые файлы в папку не добавляются. Имеющиеся в папке файлы jpg являются иллюстрациями к нумерованному спискy в Excel. Вот в этот самый список (не в картинки) иногда добавляются новые элементы.
Например: добавился новый элемент в таблицу Excel. Он добавился после номера 16, то есть сам получил номер 17, а все элементы с номера 17 до конца получили номер на 1 больше, чем был раньше. Соответственно, все файлы jpg, начиная с номера 17 до номера 600 нужно переименовать, тоже увеличив их номер на 1.
Добавлено спустя 7 минут:
Avada
Насчёт Total Commander - в первом приближении знаком, но работал в нем не очень много. Я не уверен, что мою задачу можно им решить, я вообще не знаю, чем это реально сделать. Знаю, что Total Commander - популярный инструмент для группового переименования, вот и решил спросить, реально ли такое сделать в нем.
Если задача реалистична - я разберусь. И, надеюсь, если это не слишком сложно, обучу и отца) Он делает большую сложную работу, и хотелось бы избавить его от ручного переименования сотен файлов каждый раз, как он добавит новый элемент в свой текстовый список.
Добавлено: Ср апр 03, 2019 16:43
Flasher
shadow_405 писал(а):Новые файлы в папку не добавляются.
А писали другое:
shadow_405 писал(а):Если в каталоге появляется новый элемент где-то в начале списка - все номера в пределах данного года в нем самом и, соответственно, номера картинок сдвигаются на 1.
Скиньте 2 xls с примерами до и после, так будет проще понять, что там происходит.
Добавлено: Ср апр 03, 2019 18:34
shadow_405
Flasher
Под новым элементом каталога я имел в виду новую строку в файле xls.
Прилагаю 2 xls с примером до и после.
ДО
ПОСЛЕ
В этом примере добавился новый элемент под номером 198, соответственно, бывший 198 стал 199 и т.д. Картинки есть не ко всем элементам, так что были такие файлы ДО:
1983, № 196а
1983, № 197
1983, № 199
... и так далее до номера 600.
ПОСЛЕ нужно, чтобы стало так:
1983, № 197а
1983, № 198
1983, № 200
... и так далее до номера 601.
В принципе, количество файлов jpg может со временем увеличиться, если найдется, например, иллюстрация к номеру 199 (ПОСЛЕ). Тогда этот файл картинки добавят в папку вручную и назовут "1983, № 199".
Добавлено: Ср апр 03, 2019 21:12
Flasher
shadow_405
Мне видится, здесь другой подход нужен. Без ТС. Макрос, который будет создавать новую строку с автозаполнением в первых 3-х столцах и выбором в диалоге jpg, которому будет присвоено имя из данных этих ячеек до автосмены номеров у всех нижестоящих файлов.
Добавлено: Ср апр 03, 2019 23:57
shadow_405
Flasher
Как-то уж очень сложно. А нельзя просто вариант с выбором jpg, с которого будет произведена автосмена номеров у всех нижестоящих файлов?
Работа с файлом xls не такая простая. В нем и перемещения элементов бывают, и удаления, и ошибки могут быть, в т.ч. в номерах.
Добавлено: Чт апр 04, 2019 00:40
Flasher
shadow_405
По логике подтверждение выбора jpg должно быть сигналом для автосоздания строки, автопереименования нижеследующих ячеек и соответствующих им файлов. А ошибки в ячейках логично исправить до применения макроса, тем более, что сопоставлять имена с ячейками проще в угоду текущей алфавитно-цифровой сортировки. Но это тема для Excel/VBA-форумов уже. Их довольно много.
Добавлено: Чт апр 04, 2019 00:47
shadow_405
Flasher
Но строки могут и перемещаться/удаляться.
Нет, мне бы не хотелось так связывать файл xls с переименованием картинок. Просто переименовывать картинки не получится?
Добавлено: Чт апр 04, 2019 01:24
Flasher
shadow_405
Тогда возвращаемся к простому варианту:
Код: Выделить всё
'========================== VBS ===========================
' Переименовать выбранные файлы по шаблону: * № <№+1>.<ext>
' Условия: 1) путь запуска — пустой;
' 2) сортировка — обратная алфавитно-числовая
' Параметр: %WF
'==========================================================
Option Explicit: Dim Rgx, FSO, List, F, M
If WSH.Arguments.Count = 0 Then WSH.Quit
Set Rgx = New RegExp
Rgx.Pattern = "(.+№ )(\d+)([a-zа-я]?\.\w+)$"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set List = FSO.OpenTextFile(WSH.Arguments(0),,,-1)
Do: F = List.ReadLine
If FSO.FileExists(F) Then If Rgx.Test(F) Then Set M = Rgx.Execute(F)(0) :_
FSO.GetFile(F).Name = M.SubMatches(0) & M.SubMatches(1) + 1 & M.SubMatches(2)
Loop Until List.AtEndOfStream: List.Close: Set FSO = Nothing: Set Rgx = Nothing
CreateObject("WScript.Shell").SendKeys "^r"
Добавлено: Чт апр 04, 2019 18:49
shadow_405
Flasher
Спасибо большое! Но я не нашел, где установить параметр "сортировка — обратная алфавитно-числовая". Без этого если попадаются подряд идущие номера, то скрипт выдает ошибку "такой файл уже существует".
А так работает прекрасно, можно увеличить/уменьшить номер в названии любого количества элементов на любое число, при этом всё работает корректно даже если есть буква после номера!
Добавлено: Чт апр 04, 2019 18:56
Flasher
shadow_405
Метод сортировки выбирается в выпадающем списке на странице настроек "Содержимое панелей". Прямой или обратной она делается хоткеем Ctrl+F3/F4. Это азы.
Добавлено: Чт апр 04, 2019 19:18
shadow_405
Flasher
Разобрался, я думал, это всё сложнее. Правда, порядок сортировки слетает после каждого применения скрипта и перезапуска программы, но это мелочи. Отца научить будет несложно. Еще раз спасибо огромное, очень помогли!
Добавлено: Чт апр 04, 2019 19:27
Flasher
shadow_405
После выполнения скрипта сортировка не должна слетать. А сделать в современной версии для той или иной папки её умолчательной можно с помощью настроек "Стили оформления/Автовыбор стиля".
Пож-та.
Добавлено: Чт апр 04, 2019 20:04
shadow_405
Flasher
Умолчательную сортировку сделал!
Но после применения скрипта она всё-таки становится прямой.