Добавлено: Пт окт 14, 2016 00:18
Т.е. при несовпадении, я полагаю, тоже?myscience писал(а):Думаю добавить колонку размер файла, и при его совпадении проверять хеш, и уже тогда переименовывать.
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
Т.е. при несовпадении, я полагаю, тоже?myscience писал(а):Думаю добавить колонку размер файла, и при его совпадении проверять хеш, и уже тогда переименовывать.
С файлами ничего не происходит, т.е. не переименовываются и не расчитывается их хеш.Flasher писал(а):Как это игнорируются?
Да тогда основная масса файлов (если не вся) вообще не будет переименована. Неужели не ясно? В этом нет никакого смысла.Вот это три фотосетов, которые имеют в своем составе одно изображение, имеющее описание в своем названии, которое собственно нужно и добавить к другим названиям файлов. Для уточнения задачи, добавлю, что такие фотосеты лежат в папках вместе с одиночными файлами, не являющие частью фотосетов, их нет смысла переименовать, т.к. нету текстовых описаний к их содержимым. Плюс есть еще фотосеты, составные изображения которых раскиданы по различным папкам. Конечно не будет трудно собрать все изображения в одну папку, если это нужно для переименования.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
Начало совпадает, а вот 1280 или 500 не обязательно встречаются, могут быть _540, _400, _250.1. Есть структура каталогов с файлами. В некоторых каталогах есть файлы, с совпадающим началом в базовых именах за вычетом счётчика перед _1280 или 1_500.
Не обязательно с номером 1, могут быть и другие номера (2,3,4 и так далее)2. Файлы с номером 1 в счётчике имеют в базовом имени постфикс (описание).
Могут быть, что постфиксы встретятся в файлах с последним номерным числом (вроде 7,8,9,10). Или в файлах с средним номерным числом (3 или 5).3. Этот постфикс (описание) нужно добавить к следующим по счетчику файлам в именных группах.
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
Код: Выделить всё
'================================ 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 SublporhbR8fq1qastw5o1_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