Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Групповое переименование
Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 14:29    Post subject: Reply with quote

BeardFury78
Не. Мы проверяем изменение названия файлов, а не папок, длины которых не меняются. Т.е. проверяем рабочие условия.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 14:42    Post subject: Reply with quote

Flasher
Так, а разве в длину имени файлов не входят и пути папок? Я же это и делаю - проверяю рабочие условия, увеличивая длину путей перед запуском скрипта, чтобы проверить на работоспособность при обработке папки с файлами, у которых длина путей больше 259 символов. Или нужно вручную изменять длину названия файлов?
Вернул название папки до прежнего уровня, поставил впереди цифры в счетчике, так чтобы название потенциально переименовываемого файла вместе с описанием занимало больше 259 символов и выдало тоже самую ошибку "недопустимый вызов или аргумент процедуры" и номер строки то же самый.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 14:48    Post subject: Reply with quote

BeardFury78
Рабочие условия - те, в которых это нужно делать. Т.е. той структуре, которая обрабатывается. Там нет длинных папок. Меняются только имена файлов скриптом. Зачем же вручную?

И что-то непонятное с этими путями. Там же длины по 258 символов...
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 15:00    Post subject: Reply with quote

Flasher
Так вы же вроде говорили, что надо тестировать на структуре, файлы, которых имеют 260+ символов в пути. Вот и я тестировал длину путей, меняя то название папки, то названия файлов перед запуском скрипта.
Quote:
И что-то непонятное с этими путями. Там же длины 258 символов...

Те файлы, что переименовались, да имеют, но обратите внимание на файл, который не переименовался, там еще дополнительно есть "_r1_", который увеличивает длину базового имени по сравнению с именами файлов, которые входят в ту же группу, так что при добавлении описания к нему получается больше 260 символов.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 15:05    Post subject: Reply with quote

BeardFury78
Нет. Я пишу про тесты, после которых длина изменится на 260+, а не была такой изначально.
BeardFury78 wrote:
который не переименовался
А, ясно...
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 15:08    Post subject: Reply with quote

Flasher
Я уже сократил название папки, увеличил имя исходного файла, Тотал предупредил что имя больше 259 символов и большинство программ не могут обратиться, я подтвердил переименовывание, убрал описания в названиях других файлов, оставив только базовое имя, запустил скрипт и он выдает ту же самую ошибку, про которую я сообщал.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 15:27    Post subject: Reply with quote

Flasher wrote:
Меняются только имена файлов скриптом. Зачем же вручную?

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 15:51    Post subject: Reply with quote

Flasher
Боюсь, обсуждение зашло в тупик. Попробую еще раз. Вы сказали, что нужно тестировать работу скрипта на структурах, у которых исходный файл (так я называю файл, описание в названии которого нужно передать другим файлам) имеет название, вместе с длиной пути превышающий лимит 260+ символов. И это название надо передать другим файлам, входящим в ту же группу и имеющие только базовые имена. Для этой цели я в корневом диске создал папку, в нем еще одну папку и еще одну папку в нем, там создал пустые файлы с названиями, скопированных в названиях файлов, что я выложил выше. Но дело в том, что с самого начала длина путей была меньше 259 символов, а тестировать нужно 260+, чтобы тестировать работоспособность скрипта на структуре, у которой есть исходные файлы, с названием больше 260 символов и файлы с только базовыми именами. Решил сначала пойти путем увеличения названия папки, на котором файлы располагались - получилась длина путей 260+ у исходного файла. После того как вы сказали, что папки не надо переименовать, тогда для того чтобы длина путей у исходного файла была 260+ добавлял цифры и буквы к названию этого файла и он получил длину 260+ и соответственно такое название исходного файла, за исключениям счетчика, должны получить файлы с базовыми именами и у них тоже будут 260+ символов в путей. И запустил скрипт, на котором вылезает ошибка, про которую я уже сказал. Больше разжевато я уже не могу описать. Может дело в том, что я что-то не понял, не понял исходные цели тестирования, тогда укажите, что нужно на самом деле тестировать и каким образом.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 16:07    Post subject: Reply with quote

BeardFury78 wrote:
Вы сказали, что нужно тестировать работу скрипта на структурах, у которых исходный файл (так я называю файл, описание в названии которого нужно передать другим файлам) имеет название, вместе с длиной пути превышающий лимит 260+ символов.
Да где я такое писал? Если вполне чётко сформулировал:
Flasher wrote:
Я пишу про тесты, после которых длина изменится на 260+
Скрипт сам меняет на длинные пути. Вручную этого делать не надо. Тест заключается в подгоне условий так, чтобы из 259- скрипт создавал 260+.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 16:25    Post subject: Reply with quote

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 символов в пути? Так уже прописал такое в именах файлов и запустил скрипт и он выдает ту же ошибку.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 16:34    Post subject: Reply with quote

BeardFury78
А почему он исходный, если он уже вроде как переименованный?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Wed Feb 15, 2017 16:40    Post subject: Reply with quote

Flasher
Он не переименованный вообще скриптом, это скрипт должен взять это описание из названия файла и добавить описание к другим файлам, которые содержат только общий для файлов в группе идентификатор.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Wed Feb 15, 2017 21:28    Post subject: Reply with quote

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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 128

Post (Separately) Posted: Thu Feb 16, 2017 02:02    Post subject: Reply with quote

Flasher
Переименовывает все корректно, и при 260+ длине путей и при меньше 260 символов длины путей тоже. Спасибо за исправления!
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11422
Location: Москва

Post (Separately) Posted: Thu Feb 16, 2017 02:51    Post subject: Reply with quote

BeardFury78 wrote:
и при 260+ длине путей
Результирующих имеется в виду?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next
Page 41 of 42

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group