Добавлено: Чт апр 04, 2019 20:13
shadow_405
Странно. А если апостроф перед последней строкой поставить?
Странно. А если апостроф перед последней строкой поставить?
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
Код: Выделить всё
'========================== 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"А я про рекомендацию над ней. Она касается обеих версий. И там же объяснено, зачем это (по части "важно").shadow_405 писал(а):Я именно про последнюю версию кода.
Это так просто не делается. Добавил второй параметр.shadow_405 писал(а):Я пробовал менять в третьей снизу строке ваше "+ 1" на другие значения, например, на "- 1".
Я думал, это только для старой версии. Сделал всё по инструкции, теперь проблем с сортировкой нет.Flasher писал(а):А я про рекомендацию над ней. Она касается обеих версий. И там же объяснено, зачем это (по части "важно").
Отлично, с этим параметром стало вообще идеально! Думаю, улучшать тут уже нечего, спасибо еще раз!Flasher писал(а):Это так просто не делается. Добавил второй параметр.
Логично с этого сразу начинать — до выборки сабов.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