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 ... 45, 46, 47 ... 49, 50, 51  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: 14229
Location: Москва

Post (Separately) Posted: Thu Apr 04, 2019 21:13    Post subject: Reply with quote

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



Joined: 01 Apr 2019
Posts: 18

Post (Separately) Posted: Thu Apr 04, 2019 21:32    Post subject: Reply with quote

Flasher
А вот теперь действительно странно. Теперь и старая, и новая версии скрипта не меняют сортировку Shocked
Не представляю почему (разве что комп перезагрузил), но спасибо)
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Apr 04, 2019 21:38    Post subject: Reply with quote

shadow_405
Последняя строка имитирует нажатие Ctrl+r (обновление панели). Что там могло менять сортировку — для меня загадка. Но нужна строка для быстрого обновления. Если опять возникнет такое, то предлагаю в Разном задать Ctrl+Alt+Shift+R для cm_RereadSource. И ^r поменять на ^%R в исходной строке.

Впрочем, чтобы не заботиться о смене, можно отказаться от второго условия:
Code:
'========================== 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"

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Thu Apr 04, 2019 23:19; edited 3 times in total
Back to top
View user's profile Send private message
shadow_405



Joined: 01 Apr 2019
Posts: 18

Post (Separately) Posted: Thu Apr 04, 2019 21:44    Post subject: Reply with quote

Flasher
Отлично, попробую!

Добавлено спустя 13 минут:

А эта версия выдает ошибку, если один файл от другого отличается только наличием буквы, например:
1983, № 215
1983, № 215а
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Apr 04, 2019 22:17    Post subject: Reply with quote

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



Joined: 01 Apr 2019
Posts: 18

Post (Separately) Posted: Thu Apr 04, 2019 22:55    Post subject: Reply with quote

Flasher
При применении опять менял сортировку. Если добавить апостроф перед последней строкой - не меняет. В любом случае, переименование шло без ошибок при любой сортировке.
Зато при попытке уменьшать номера - ошибка при любой сортировке.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Apr 04, 2019 22:57    Post subject: Reply with quote

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



Joined: 01 Apr 2019
Posts: 18

Post (Separately) Posted: Thu Apr 04, 2019 23:04    Post subject: Reply with quote

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



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

Post (Separately) Posted: Thu Apr 04, 2019 23:22    Post subject: Reply with quote

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



Joined: 01 Apr 2019
Posts: 18

Post (Separately) Posted: Fri Apr 05, 2019 00:31    Post subject: Reply with quote

Flasher wrote:
А я про рекомендацию над ней. Она касается обеих версий. И там же объяснено, зачем это (по части "важно").

Я думал, это только для старой версии. Сделал всё по инструкции, теперь проблем с сортировкой нет.
Flasher wrote:
Это так просто не делается. Добавил второй параметр.

Отлично, с этим параметром стало вообще идеально! Думаю, улучшать тут уже нечего, спасибо еще раз!
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 663

Post (Separately) Posted: Mon Jul 29, 2019 01:40    Post subject: Reply with quote

Нужен скрипт, который будет переименовывать выделенный 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).
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10252
Location: Россия, Саратов

Post (Separately) Posted: Mon Jul 29, 2019 12:14    Post subject: Reply with quote

Dimsok
Перенесено из темы "Script Request" в более подобающее запросу место.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Jul 29, 2019 12:43    Post subject: Reply with quote

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



Joined: 17 Aug 2014
Posts: 663

Post (Separately) Posted: Tue Jul 30, 2019 01:19    Post subject: Reply with quote

Для меня хуже - привык по порядку.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Jul 30, 2019 07:36    Post subject: Reply with quote

К какому порядку? Объясни нормально. С папками гораздо меньше возни будет.

Dimsok wrote:
Ничего не делать и в случае, если в папке нет видеофайлов с такими расширениями, или есть больше одного.
Логично с этого сразу начинать — до выборки сабов.
Code:
'========================== 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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Jul 31, 2019 10:09; edited 1 time in total
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 ... 45, 46, 47 ... 49, 50, 51  Next
Page 46 of 51

 
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