Групповое переименование
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
-
shadow_405
- Сообщения: 18
- Зарегистрирован: Пн апр 01, 2019 16:37
shadow_405
Последняя строка имитирует нажатие Ctrl+r (обновление панели). Что там могло менять сортировку — для меня загадка. Но нужна строка для быстрого обновления. Если опять возникнет такое, то предлагаю в Разном задать Ctrl+Alt+Shift+R для cm_RereadSource. И ^r поменять на ^%R в исходной строке.
Впрочем, чтобы не заботиться о смене, можно отказаться от второго условия:
Последняя строка имитирует нажатие Ctrl+r (обновление панели). Что там могло менять сортировку — для меня загадка. Но нужна строка для быстрого обновления. Если опять возникнет такое, то предлагаю в Разном задать Ctrl+Alt+Shift+R для cm_RereadSource. И ^r поменять на ^%R в исходной строке.
Впрочем, чтобы не заботиться о смене, можно отказаться от второго условия:
Код: Выделить всё
'========================== VBS ===========================
' Переименовать выбранные файлы по шаблону: * № <№+x>.<ext>
' Условие: путь запуска — пустой
' Параметры: %WF <[-]число счётчика>
' Примеры: %WF 2 | %WF -1
'==========================================================
Option Explicit: Dim Rgx, FSO, Col, List, Num, F, i, M
If WSH.Arguments.Count = 0 Then WSH.Quit
Set Rgx = New RegExp
Rgx.Pattern = "(.+№ )(\d+)([a-zа-я]?\.\w+)$"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Col = CreateObject("System.Collections.ArrayList")
Set List = FSO.OpenTextFile(WSH.Arguments(0),,,-1)
Num = CInt(WSH.Arguments(1))
Do: F = List.ReadLine
If Right(F, 1) <> "\" Then If Rgx.Test(F) Then _
Col.Add Rgx.Execute(F)(0).SubMatches(1) & "_" & F
Loop Until List.AtEndOfStream: List.Close
Col.Sort : If Num > 0 Then Col.Reverse
For Each F in Col
F = Split(F, "_")(1) : Set M = Rgx.Execute(F)(0)
FSO.GetFile(F).Name = M.SubMatches(0) & M.SubMatches(1) + Num & M.SubMatches(2)
Next : Set Col = Nothing : Set FSO = Nothing : Set Rgx = Nothing
CreateObject("WScript.Shell").SendKeys "^r"
Последний раз редактировалось Flasher Чт апр 04, 2019 22:19, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
shadow_405
- Сообщения: 18
- Зарегистрирован: Пн апр 01, 2019 16:37
-
shadow_405
- Сообщения: 18
- Зарегистрирован: Пн апр 01, 2019 16:37
shadow_405
Я выше дал рекомендацию без апострофа. Она выполнена?
Насчёт уменьшения не понял.
Я выше дал рекомендацию без апострофа. Она выполнена?
Насчёт уменьшения не понял.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
shadow_405
- Сообщения: 18
- Зарегистрирован: Пн апр 01, 2019 16:37
Flasher
Я именно про последнюю версию кода. Без апострофа опять меняет сортировку, хотя это уже и не так важно, раз работает при любой.
Я пробовал менять в третьей снизу строке ваше "+ 1" на другие значения, например, на "- 1". Вдруг возникнет потребность уменьшить все номера. В предыдущей версии скрипта всё работало и на сложении, и на вычитании, а в последней вычитание не работает.
Я именно про последнюю версию кода. Без апострофа опять меняет сортировку, хотя это уже и не так важно, раз работает при любой.
Я пробовал менять в третьей снизу строке ваше "+ 1" на другие значения, например, на "- 1". Вдруг возникнет потребность уменьшить все номера. В предыдущей версии скрипта всё работало и на сложении, и на вычитании, а в последней вычитание не работает.
А я про рекомендацию над ней. Она касается обеих версий. И там же объяснено, зачем это (по части "важно").shadow_405 писал(а):Я именно про последнюю версию кода.
Это так просто не делается. Добавил второй параметр.shadow_405 писал(а):Я пробовал менять в третьей снизу строке ваше "+ 1" на другие значения, например, на "- 1".
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
shadow_405
- Сообщения: 18
- Зарегистрирован: Пн апр 01, 2019 16:37
Я думал, это только для старой версии. Сделал всё по инструкции, теперь проблем с сортировкой нет.Flasher писал(а):А я про рекомендацию над ней. Она касается обеих версий. И там же объяснено, зачем это (по части "важно").
Отлично, с этим параметром стало вообще идеально! Думаю, улучшать тут уже нечего, спасибо еще раз!Flasher писал(а):Это так просто не делается. Добавил второй параметр.
Нужен скрипт, который будет переименовывать выделенный srt, sub, ass,ssa файлы под имя avi, mkv,mp4 файла, находящегося в той же папке, с добавлением .rus (без расшерения видеофайла). Если файл субтитра с данным именем уже имеется в папке, добавлять .eng. Если файл и с таким именем имеется, то ничего не делать. Ничего не делать и в случае, если в папке нет видеофайлов с такими расширениями, или есть больше одного.
Пример: 111.srt > Terminator.rus.srt (при наличии файла Terminator.mkv). 222.srt > Terminator.eng.srt (при наличии файлов Terminator.mkv и Terminator.rus.srt).
Пример: 111.srt > Terminator.rus.srt (при наличии файла Terminator.mkv). 222.srt > Terminator.eng.srt (при наличии файлов Terminator.mkv и Terminator.rus.srt).
К какому порядку? Объясни нормально. С папками гораздо меньше возни будет.
Логично с этого сразу начинать — до выборки сабов.Dimsok писал(а):Ничего не делать и в случае, если в папке нет видеофайлов с такими расширениями, или есть больше одного.
Код: Выделить всё
'========================== VBS ===========================
' Переименование базовых имён выбранных субтитров в базовые
' имена одиночных видеофайлов и годное языковое расширение
' Условие: путь запуска — пустой
' Параметры: %WL <маска расширений видео>
' Пример: %WL *.avi;*.mkv;*.mp4
'==========================================================
Option Explicit
Dim Items, List, BN, F, Ext, sExt
If WSH.Arguments.Count = 0 Then WSH.Quit
With CreateObject("Scripting.FileSystemObject")
Set Items = CreateObject("Shell.Application")._
NameSpace(.GetAbsolutePathName("")).Items
Items.Filter 8256, WSH.Arguments(1)
If Items.Count <> 1 Then WSH.Quit
Set List = .OpenTextFile(WSH.Arguments(0),,,-1)
BN = .GetBaseName(Items.Item(0).Path)
Set Items = Nothing
Do: F = List.ReadLine
If Right(F, 1) <> "" Then
Ext = .GetExtensionName(F)
If InStr(" srt sub ass ssa ", " " & LCase(Ext) & " ") Then
sExt = ".rus." : If .FileExists(BN & sExt & Ext) Then sExt = ".eng."
If Not .FileExists(BN & sExt & Ext) Then .GetFile(F).Name = BN & sExt & Ext
End If
End If
Loop Until List.AtEndOfStream
End With
List.Close : Set List = Nothing
Последний раз редактировалось Flasher Ср июл 31, 2019 09:09, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.