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 

Single Post  Topic: Групповое переименование 
Author Message
Flasher



PostPosted: Mon Feb 09, 2015 23:09    Post subject: Reply with quote

Serge Yolkin
Ладно, я чего-то подустал ждать.

Iori
Code:
'============================== VBS =============================
' Переименовать выбранные элементы с помощью регулярных выражений

' Параметры: %WL <строка поиска> <строка замены>
' /i  —  ключ отключения зависимости от регистра
'================================================================
Option Explicit
Dim C, List, S, R, REx, F, N, IsFold, Ln, BN, Ext, Path, FN, i
With WSH.Arguments
  C = .UnNamed.Count : If C = 0 Then WSH.Quit
  If C <> 3 Then MsgBox "Следует указать 3 параметра!",_
  4144, Space(12) & "Ошибка вводных данных" : WSH.Quit
  List = .Item(0) : S = .Item(1) : R = .Item(2)
  C = .Named.Exists("i")
End With: Set REx = New RegExp: REx.Global = 1
REx.Pattern = S : If C Then REx.IgnoreCase = 1

With CreateObject("Scripting.FileSystemObject")
  Set List = .OpenTextFile(List,,,-1)
  Do : F = List.ReadLine : N = .GetFileName(F) : IsFold = Right(F, 1) = "\"
    If IsFold Then Ln = Len(F) - 1 : BN = N Else Ln = Len(F) :_
    BN = .GetBaseName(F) : Ext = .GetExtensionName(F) :_
    If Len(Ext) Then Ext = "." & Ext
    Path = "\\?\" & .GetParentFolderName(F) & "\"
    If Ln > 259 Then F = "\\?\" & F
    BN = REx.Replace(BN, R) : FN = BN & Ext : i = 0
    While (.FileExists(Path & FN) OR .FolderExists(Path & FN)) And FN <> N
    i = i + 1 : FN = BN & " (" & i & ")" & Ext : Wend : If FN <> N Then _
    If IsFold Then .GetFolder(F).Name = FN Else .GetFile(F).Name = FN
  Loop Until List.AtEndOfStream
End With : CreateObject("WScript.Shell").SendKeys "^r"
Параметры для запрошенного случая: %WL ([^\(|^\[])(\s+)((?!\)|\])) $1.$3
Строка поиска ещё может быть такой: ([^\(|^\[])(\s+)([^\)|^\]])
По числу символов одинаково, так что - без разницы.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Tue Feb 17, 2015 19:43; edited 2 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group