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

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

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

Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Правильно могут быть переименованы 2 субтитра - название фильма.rus.srt/sub/ass/ssa, название фильма.eng.srt/sub/ass/ssa. Если они существуют, то ничего не делать.

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

Сообщение Flasher »

Какая разница, за сколько раз?
В папке 5 файлов:
1. Name.sub
2. Name.rus.srt
3. Name.rus.ass
4. Name.eng.ssa
5. Name.mp4

Под курсором первый файл. Следуя твоей логике, eng добавлять нельзя, т.к. остальные имеют только 2 rus вместо 3-х, но и rus нельзя, т.к. уже есть srt с такой добавкой. Вот тебе и гремучая смесь.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

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

Сообщение Flasher »

Хотя бы один из трёх.
Так это ответ был? Я подумал, что это повторение моих слов (аля цитата). Т.е. я правильно понимаю, что игнорировать в случае, когда есть любая из 6-ти комбинаций eng/rus? "2 (или 3) и 4" — это уже не то же самое, и ты об этом нигде не писал.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Хотя бы один из трёх.
Я думал, это было достаточно ясно. Ну посуди, зачем мне 2 (и тем более 3) разных типа субтитров для одного языка. Это же не марки или монеты.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ты мне на 2-й вопрос ответишь, ядрён батон? )
Зачем/не зачем — скрипту без разницы. Нужно отшить ложные срабатывания.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Если есть любая из 4-х комбинаций rus (srt,sub,ass,ssa), именовать в eng того расширения, которое имеет выделенный файл субтитра. Если и eng имеет уже любую из 4-х комбинаций, то ничего не делать.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тестируй:

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

'============================ VBS =============================
' Переименование базового имени субтитра под курсором в базовое
' имя одиночного видеофайла и подходящее языковое расширение

' Параметры: %V <маска расширений видео>
' Пример:    %V *.avi;*.mkv;*.mp4
'==============================================================
Option Explicit: Dim Items, F, BN, Ext, sExt, Exts, E
With CreateObject("Scripting.FileSystemObject")
  F = WSH.Arguments(0)
  If .FileExists(F) Then
    Set Items = CreateObject("Shell.Application")._
    NameSpace(.GetParentFolderName(F)).Items
    Items.Filter 8256, WSH.Arguments(1)
    If Items.Count <> 1 Then WSH.Quit
    BN = .GetBaseName(Items.Item(0).Path)
    Ext = .GetExtensionName(F) : Set Items = Nothing
    If InStr("|srt|sub|ass|ssa|", "|" & LCase(Ext) & "|") Then
    If InStr("|.eng|.rus|", "|" & Right(LCase(BN), 4) & "|") = 0 Then
      sExt = ".rus." : Exts = "srt sub ssa ass"
      For Each E in Split(Exts)
        If .FileExists(BN & sExt & E) Then sExt = ".eng." : Exit For
      Next
      If sExt = ".eng." Then
        For Each E in Split(Exts)
          If .FileExists(BN & sExt & E) Then WSH.Quit
        Next
      End If
      .GetFile(F).Name = BN & sExt & Ext
    End If
    End If
  End If
End With
Последний раз редактировалось Flasher Вт авг 06, 2019 03:54, всего редактировалось 6 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

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

Сообщение Flasher »

Исправил.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

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

Сообщение Flasher »

Мда. Не заглянул в первый код. См. сейчас.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Работает как и в первом варианте. При наличии файл.avi и файл.rus.srt выделенному субтитру sub даётся тот же язык - файл.rus.sub (а надо eng).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Обновил.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

На том же примере, если файл.rus.sub srt, то:
Строка 30
Символ 8
Файл уже существует.
Ответить