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

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

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

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

Сообщение Flasher »

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

Сообщение BeardFury78 »

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

Сообщение Flasher »

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

Сообщение BeardFury78 »

Flasher
Придется ждать долго, у меня 560 тысяч файлов в папках и за 45 минут работы скрипт примерно на 25% продвинулся.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

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

Сообщение Flasher »

Блиииин... Я забыл, что там Option Explicit. Отладка коту под хвост...
Тогда предлагаю увидеть только первый проблемный путь и завершить скрипт. WSH.Echo S убираем, а вместо

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

              If Err.Number <> 0 Then S = S & vbCr & I.Path
пишем

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

              If Err.Number <> 0 Then MsgBox I.Path: WSH.Quit
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

Вот это выдало:
e:\Файлы\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo3_r1_1280.gif
Там вместе с этим файлом лежат файлы, которые уже успешно переименовались. А этот файл не переименовался.
Все вместе эти файлы:
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo1_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 dangerous Latina curves Lorena is stud.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo2_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 dangerous Latina curves Lorena is stud.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo3_r1_1280.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo4_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 dangerous Latina curves Lorena is stud.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo5_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 dangerous Latina curves Lorena is stud.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\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 dangerous Latina curves Lorena is stud.gif
E:\TumblThree-v1.0.4.15\TumblThree\Blogs\adultinforeblogs\tumblr_mnjbhcWuVV1qibqomo7_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 dangerous Latina curves Lorena is stud.gif
Похоже причина в слишком большем длине файла tumblr_mnjbhcWuVV1qibqomo3_r1_1280.gif (в нем есть еще "_r1_"), чтобы к нему еще добавлять описание, получается больше 260 символов.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Похоже, или я с этого начал? ;)

Возвращаемся к исходнику. В конец 18 строки добавляем: , FP, NP
Вместо:

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

              If Rgx.Test(I) And Not FSO.FileExists(I.Parent.Self._
              Path & "\" & NN) Then FSO.GetFile(I.Path).Name = NN
пишем:

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

              FP = I.Path : NP = I.Parent.Self.Path & "\" & NN
              If Len(NP) > 259 Then FP = "\\?\" & FP : NP = "\\?\" & NP
              If Rgx.Test(I) And Not FSO.FileExists(NP) Then FSO.GetFile(FP).Name = NN
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
BeardFury78
Сообщения: 213
Зарегистрирован: Чт авг 25, 2016 05:24

Сообщение BeardFury78 »

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

Сообщение Flasher »

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

Сообщение BeardFury78 »

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

Сообщение Flasher »

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

Сообщение BeardFury78 »

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

Сообщение Flasher »

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

Сообщение BeardFury78 »

Итоги тестирования. Скрипт нормально переименовывает, когда длина пути менее 260 символов. Но когда увеличиваю название папки так, что длина путей становится больше 260+, то при запуске скрипта происходит ошибка "Строка: 36, Символ: 62, Ошибка: Недопустимый вызов или аргумент процедуры" и файлы, которые бы получали вместе с описанием длину путей больше 260+ символов, не переименовываются.
Вот эта строка:
If Rgx.Test(I) And Not FSO.FileExists(NP) Then FSO.GetFile(FP).Name = NN
Названия файлов те же самые, что приведены выше.
Ответить