Групповое переименование
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 40, 41, 42 ... 49, 50, 51  Next  :| |:
Total Commander -> Автоматизация Total Commander

#601:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 14:29
    —
BeardFury78
Не. Мы проверяем изменение названия файлов, а не папок, длины которых не меняются. Т.е. проверяем рабочие условия.

#602:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 14:42
    —
Flasher
Так, а разве в длину имени файлов не входят и пути папок? Я же это и делаю - проверяю рабочие условия, увеличивая длину путей перед запуском скрипта, чтобы проверить на работоспособность при обработке папки с файлами, у которых длина путей больше 259 символов. Или нужно вручную изменять длину названия файлов?
Вернул название папки до прежнего уровня, поставил впереди цифры в счетчике, так чтобы название потенциально переименовываемого файла вместе с описанием занимало больше 259 символов и выдало тоже самую ошибку "недопустимый вызов или аргумент процедуры" и номер строки то же самый.

#603:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 14:48
    —
BeardFury78
Рабочие условия - те, в которых это нужно делать. Т.е. той структуре, которая обрабатывается. Там нет длинных папок. Меняются только имена файлов скриптом. Зачем же вручную?

И что-то непонятное с этими путями. Там же длины по 258 символов...

#604:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 15:00
    —
Flasher
Так вы же вроде говорили, что надо тестировать на структуре, файлы, которых имеют 260+ символов в пути. Вот и я тестировал длину путей, меняя то название папки, то названия файлов перед запуском скрипта.
Quote:
И что-то непонятное с этими путями. Там же длины 258 символов...

Те файлы, что переименовались, да имеют, но обратите внимание на файл, который не переименовался, там еще дополнительно есть "_r1_", который увеличивает длину базового имени по сравнению с именами файлов, которые входят в ту же группу, так что при добавлении описания к нему получается больше 260 символов.

#605:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 15:05
    —
BeardFury78
Нет. Я пишу про тесты, после которых длина изменится на 260+, а не была такой изначально.
BeardFury78 wrote:
который не переименовался
А, ясно...

#606:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 15:08
    —
Flasher
Я уже сократил название папки, увеличил имя исходного файла, Тотал предупредил что имя больше 259 символов и большинство программ не могут обратиться, я подтвердил переименовывание, убрал описания в названиях других файлов, оставив только базовое имя, запустил скрипт и он выдает ту же самую ошибку, про которую я сообщал.

#607:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 15:27
    —
Flasher wrote:
Меняются только имена файлов скриптом. Зачем же вручную?

#608:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 15:51
    —
Flasher
Боюсь, обсуждение зашло в тупик. Попробую еще раз. Вы сказали, что нужно тестировать работу скрипта на структурах, у которых исходный файл (так я называю файл, описание в названии которого нужно передать другим файлам) имеет название, вместе с длиной пути превышающий лимит 260+ символов. И это название надо передать другим файлам, входящим в ту же группу и имеющие только базовые имена. Для этой цели я в корневом диске создал папку, в нем еще одну папку и еще одну папку в нем, там создал пустые файлы с названиями, скопированных в названиях файлов, что я выложил выше. Но дело в том, что с самого начала длина путей была меньше 259 символов, а тестировать нужно 260+, чтобы тестировать работоспособность скрипта на структуре, у которой есть исходные файлы, с названием больше 260 символов и файлы с только базовыми именами. Решил сначала пойти путем увеличения названия папки, на котором файлы располагались - получилась длина путей 260+ у исходного файла. После того как вы сказали, что папки не надо переименовать, тогда для того чтобы длина путей у исходного файла была 260+ добавлял цифры и буквы к названию этого файла и он получил длину 260+ и соответственно такое название исходного файла, за исключениям счетчика, должны получить файлы с базовыми именами и у них тоже будут 260+ символов в путей. И запустил скрипт, на котором вылезает ошибка, про которую я уже сказал. Больше разжевато я уже не могу описать. Может дело в том, что я что-то не понял, не понял исходные цели тестирования, тогда укажите, что нужно на самом деле тестировать и каким образом.

#609:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 16:07
    —
BeardFury78 wrote:
Вы сказали, что нужно тестировать работу скрипта на структурах, у которых исходный файл (так я называю файл, описание в названии которого нужно передать другим файлам) имеет название, вместе с длиной пути превышающий лимит 260+ символов.
Да где я такое писал? Если вполне чётко сформулировал:
Flasher wrote:
Я пишу про тесты, после которых длина изменится на 260+
Скрипт сам меняет на длинные пути. Вручную этого делать не надо. Тест заключается в подгоне условий так, чтобы из 259- скрипт создавал 260+.

#610:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 16:25
    —
Quote:
Тест заключается в подгоне условий так, чтобы из 259- скрипт создавал 260+.

То есть, это когда вот так:
Quote:
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo1_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo2_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo3_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo4_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo5_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo7_r123_1280.gif
g:\TumblThree-v1.0.4.15\TumblThree\Blogs\adulsss\tumblr_mnjbhcWuVV1qibqomo6_1280 kawagane - reblog Lorena B Lorena Garcia is a very spicy Latina adult and glamour model She has a nice tall body with all the 5555555555dangerous Latina curves Lorena is stud.gif

Исходный файл содержит только 259 символов в полном пути, а другие имена имеют еще "_r123", что получается +4 символов к пути и скрипт следовательно переименовывает их и такие имена будут иметь 263 символов в пути? Так уже прописал такое в именах файлов и запустил скрипт и он выдает ту же ошибку.

#611:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 16:34
    —
BeardFury78
А почему он исходный, если он уже вроде как переименованный?

#612:  Author: BeardFury78 PostPosted: Wed Feb 15, 2017 16:40
    —
Flasher
Он не переименованный вообще скриптом, это скрипт должен взять это описание из названия файла и добавить описание к другим файлам, которые содержат только общий для файлов в группе идентификатор.

#613:  Author: FlasherLocation: Москва PostPosted: Wed Feb 15, 2017 21:28
    —
BeardFury78
Так'с. Сейчас посмотрел, что там. Напрямую действительно не получается переименовать. Тогда так попробуем:
Code:
'================================ VBS ================================
' Добавка к именам файлов в структуре активного каталога отсутствующих
' описаний, имеющихся в конце имени одного файла cхожей именной группы
'
' Условие: путь запуска - пустой
'=====================================================================
Option Explicit: Dim ShA, Stm, Dic, FSO, Rgx, Reg, CD
Set ShA = CreateObject("Shell.Application")
Set Stm = CreateObject("SAPI.SpFileStream")
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, NP, LP, All
  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)
              NP = I.Parent.Self.Path & "\" & NN: LP = Len(NP) > 259
              If LP Then NP = "\\?\" & NP
              If Rgx.Test(I) And Not FSO.FileExists(NP) Then
                If LP Then
                  With Stm
                    .Format.Type = 1 : .Open I.Path, 0 : .Read All, I.Size
                    .Close : .Open NP, 3, True : .Write All : .Close
                  End With : FSO.GetFile(I.Path).Delete
                Else FSO.GetFile(I.Path).Name = NN End If
              End If
            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

#614:  Author: BeardFury78 PostPosted: Thu Feb 16, 2017 02:02
    —
Flasher
Переименовывает все корректно, и при 260+ длине путей и при меньше 260 символов длины путей тоже. Спасибо за исправления!

#615:  Author: FlasherLocation: Москва PostPosted: Thu Feb 16, 2017 02:51
    —
BeardFury78 wrote:
и при 260+ длине путей
Результирующих имеется в виду?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 40, 41, 42 ... 49, 50, 51  Next  :| |:
Page 41 of 51

Powered by phpBB © 2001, 2005 phpBB Group