Групповое переименование

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

myscience писал(а):Думаю добавить колонку размер файла, и при его совпадении проверять хеш, и уже тогда переименовывать.
Т.е. при несовпадении, я полагаю, тоже?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
myscience
Сообщения: 21
Зарегистрирован: Вт мар 22, 2016 12:51

Сообщение myscience »

Нет, если совпал размер байтах, то проверяем хеш. Если совпал хеш, то рекурсивно переименовываем. Остальные варианты игнорируются.
По ссылке http://rgho.st/8NccMvghD пример файла ex1.csv.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Как это игнорируются? :shock: Размер одного файла ни с каким другим не совпадает. Зачем ещё и хэш проверять?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
myscience
Сообщения: 21
Зарегистрирован: Вт мар 22, 2016 12:51

Сообщение myscience »

Flasher писал(а):Как это игнорируются?
С файлами ничего не происходит, т.е. не переименовываются и не расчитывается их хеш.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Это глупо. Зачем вообще в таком случае использовать размер?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
myscience
Сообщения: 21
Зарегистрирован: Вт мар 22, 2016 12:51

Сообщение myscience »

Как зачем? Чтобы не считать хеш для файлов разных размеров и, таким образом, ускорить работу.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Изображение Да тогда основная масса файлов (если не вся) вообще не будет переименована. Неужели не ясно? В этом нет никакого смысла.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Приветствую всех. Нужна помощь, сам не соображу как быть. Есть изображения, которые являются частью фотосетов, их названия состоят из уникального набора букв и цифр (которые являются идентификаторами фотосетов) с окончаниям на "1_500" или "1_1280" (но могут быть и 2_500 или 6_1280). Есть изображения, которые тоже являются частью фотосетов, но в отличии от своих одногруппных изображений, они в добавок к уникальному набору букв и цифр еще имеют текстовое описание содержимого фотосетов. Вот эти описания фотосетов нужно добавить к названиям других изображений, входящие в те же группы фотосетов. Чтобы было понятно о чем речь, приведу примеры:
nowlcfDMf31u66m1jo1_1280 Mountain Goverla.jpg
nowlcfDMf31u66m1jo2_1280.jpg
nowlcfDMf31u66m1jo3_1280.jpg
nowo7nTPbv1u1lwmyo1_1280 Sorochyntsi Fair.jpg
nowo7nTPbv1u1lwmyo2_1280.jpg
nowo7nTPbv1u1lwmyo3_1280.jpg
nowo7nTPbv1u1lwmyo4_1280.jpg
noxe9lbYvH1ututj5o1_1280 Kupala.jpg
noxe9lbYvH1ututj5o10_1280.jpg
noxe9lbYvH1ututj5o2_1280.jpg
noxe9lbYvH1ututj5o3_1280.jpg
noxe9lbYvH1ututj5o4_1280.jpg
noxe9lbYvH1ututj5o5_1280.jpg
noxe9lbYvH1ututj5o6_1280.jpg
noxe9lbYvH1ututj5o7_1280.jpg
noxe9lbYvH1ututj5o8_1280.jpg
noxe9lbYvH1ututj5o9_1280.jpg
Вот это три фотосетов, которые имеют в своем составе одно изображение, имеющее описание в своем названии, которое собственно нужно и добавить к другим названиям файлов. Для уточнения задачи, добавлю, что такие фотосеты лежат в папках вместе с одиночными файлами, не являющие частью фотосетов, их нет смысла переименовать, т.к. нету текстовых описаний к их содержимым. Плюс есть еще фотосеты, составные изображения которых раскиданы по различным папкам. Конечно не будет трудно собрать все изображения в одну папку, если это нужно для переименования.
Возможно ли написать скрипт для решения такой задачи? К вводным добавлю, что абсолютно все изображения, имеющие описания, содержат в названиях пробел после набора букв и цифр и все названия изображениях, которые не имеют описания, ничего не содержат (включая пробелы) помимо набора букв и цифр и расширения. Спасибо.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

BeardFury78
Описание ТЗ чересчур избыточно и без размежевания по пунктам сложно воспринимается. Попробую сам:
1. Есть структура каталогов с файлами. В некоторых каталогах есть файлы, с совпадающим началом в базовых именах за вычетом счётчика перед _1280 или 1_500.
2. Файлы с номером 1 в счётчике имеют в базовом имени <пробел>постфикс (описание).
3. Этот <пробел>постфикс (описание) нужно добавить к базовым именам следующих по счетчику файлов в именных группах.

Верно понято?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

1. Есть структура каталогов с файлами. В некоторых каталогах есть файлы, с совпадающим началом в базовых именах за вычетом счётчика перед _1280 или 1_500.
Начало совпадает, а вот 1280 или 500 не обязательно встречаются, могут быть _540, _400, _250.
2. Файлы с номером 1 в счётчике имеют в базовом имени постфикс (описание).
Не обязательно с номером 1, могут быть и другие номера (2,3,4 и так далее)
3. Этот постфикс (описание) нужно добавить к следующим по счетчику файлам в именных группах.
Могут быть, что постфиксы встретятся в файлах с последним номерным числом (вроде 7,8,9,10). Или в файлах с средним номерным числом (3 или 5).

Пример:
nowlcfDMf31u66m1jo1_1280.jpg
nowlcfDMf31u66m1jo2_1280 Mountain Goverla.jpg
nowlcfDMf31u66m1jo3_1280.jpg
nowo7nTPbv1u1lwmyo1_1280.jpg
nowo7nTPbv1u1lwmyo2_1280.jpg
nowo7nTPbv1u1lwmyo3_1280 Sorochyntsi Fair.jpg
nowo7nTPbv1u1lwmyo4_1280.jpg
Последний раз редактировалось BeardFury78 Пт дек 09, 2016 03:08, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ясно. Ищем в выбранных каталогах или во всех по фильтру?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Flasher
Пусть будет во всех подпапках в активном каталоге.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

BeardFury78
Включая и активный каталог, я полагаю:

Код: Выделить всё

'================================ VBS ================================
' Добавка к именам файлов в структуре активного каталога отсутствующих
' описаний, имеющихся в конце имени одного файла cхожей именной группы
'
' Условие: путь запуска - пустой
'=====================================================================
Option Explicit: Dim ShA, Dic, FSO, Rgx, Reg, CD
Set ShA = CreateObject("Shell.Application")
Set Dic = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Rgx = New RegExp : Rgx.Pattern = "^[^ ]+?\d+_\d+\.[A-z]{1,4}$"
Set Reg = New RegExp : Reg.Pattern = "^([^ ]+?)\d+_\d+( .+\.)[A-z]{1,4}$"
CD = FSO.GetAbsolutePathName("")
If CD = FSO.GetParentFolderName(WScript.ScriptFullName) Then WScript.Quit
ForFolder CD: MsgBox "Выполнено!", 4160, " Групповое переименование     "

Sub ForFolder(Path)
  Dim Items, F, N1, N2, Itms, I, NN, Folder
  Set Items = ShA.NameSpace(Path).Items
  Items.Filter  73920, "*_* *.*"
  If Items.Count Then
    For Each F In Items
      If Reg.Test(F) Then
        With Reg.Execute(F)(0)
          N1 = .Submatches(0) : N2 = .Submatches(1)
        End With
        If Not Dic.Exists(N1) Then
          Set Itms = ShA.NameSpace(Path).Items
          Itms.Filter 73920, N1 & "*_*.*"
          If Itms.Count > 1 Then
            Dic.Add N1, ""
            For Each I In Itms
              NN = FSO.GetBaseName(I) & N2 & FSO.GetExtensionName(I)
              If Rgx.Test(I) And Not FSO.FileExists(I.Parent.Self._
              Path & "\" & NN) Then FSO.GetFile(I.Path).Name = NN
            Next
          End If
        End If
      End If
    Next: Dic.RemoveAll
  End If: Items.Filter 73888, "*" : If Items.Count Then _
  For Each Folder In Items : ForFolder Folder.Path : Next
End Sub
Последний раз редактировалось Flasher Пт дек 16, 2016 21:18, всего редактировалось 12 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Flasher
Это два скрипта? Первый пишет, что переменная "ForFolder" не определенная. Второй скрипт только пишет, что "Выполнено!", но почти ничего не переименовалось (только строка lpwpi0Xydl1qby5h2o4_500.jpg переименовалась). Тестил на этих файлах:
lporhbR8fq1qastw5o1_500 thesethingsiveseen - I call this one best day.jpg
lporhbR8fq1qastw5o2_500.jpg
lporhbR8fq1qastw5o3_540.jpg
lporhbR8fq1qastw5o4_540.jpg
lporhbR8fq1qastw5o5_540.jpg
lpwpi0Xydl1qby5h2o2_1280.jpg
lpwpi0Xydl1qby5h2o3_1280.jpg
lpwpi0Xydl1qby5h2o4_500 New York the winter.jpg
lpwpi0Xydl1qby5h2o5_540.jpg
lpwpi0Xydl1qby5h2o6_500 New York the winter.jpg
lqiz638ZMr1qk661oo1_500 thedarksideofgruff - just perfect.jpg
lqiz638ZMr1qk661oo2_500.jpg
lqiz638ZMr1qk661oo3_500.jpg
lqiz638ZMr1qk661oo4_500.jpg
lqwdczDRHe1qastw5o1_500 thesethingsiveseen - who needs cheering up and I know.jpg
lqwdczDRHe1qastw5o2_500.jpg
lqwdczDRHe1qastw5o3_500.jpg
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

BeardFury78
Нет. Я код слегка правил, накосячил при вставке. Вернул как было.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить