Flasher

|
Posted: Sun Dec 02, 2012 21:11 Post subject: |
|
|
shveicar
Хотелось изящества вроде приведённого выше кода, но так и не вышло. Сделал по старинке: сплиттингом и стандартной склейкой.
Code: | '==============================================================================
' Замена в сроках выделенных файлов части внутри заданного текстового диапазона
' на соответствующий вхождению номер с помощью регулярных выражений
'
' Параметры: %WL {начальная часть} {заменяемая часть} {завершающая часть}
' Пример: %WL "files/" "([0-9]+)" "\.jpg"
' Автор: Flasher ©
'==============================================================================
With WScript.Arguments
If .Count = 0 Then WScript.Quit
List = .Item(0) : Before = .Item(1) : Middle = .Item(2) : After = .Item(3)
End With : L = vbNewLine
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
If F > vbNullString Then
If FSO.FileExists(F) Then
i = 0 : Text = "" : Str = "" : Full = "" : Set T = FSO.OpenTextFile(F)
Do While Not T.AtEndOfStream
Str = Trim(T.ReadLine)
With New RegExp
.IgnoreCase = True : .Global = True : .Pattern = Before & Middle & After
If .Test(Str) Then
C = .Execute(Str).Count
If C > 1 Then
Str = .Replace(Str, Before & L & Replace(After, "\", ""))
For Each FStr in Split(Str, L)
i = i + 1 : If i < 10 Then i = "00" & i
If i > 9 And i < 100 Then i = "0" & i
Full = Full & FStr & i
Next : Str = Mid(Full, 1, Len(Full) - Len(i))
ElseIf C = 1 Then
i = i + 1 : If i < 10 Then i = "00" & i : If i > 9 And i < 100 Then i = "0" & i
Str = .Replace(Str, Before & i & Replace(After, "\", ""))
End If
End If
End With : Text = Text & L & Str
Loop : T.Close : Set T = Nothing : FSO.OpenTextFile(F, 2).Write Mid(Text, 3)
End If
End If
Next : Set FSO = Nothing : WScript.Quit |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Mon Dec 03, 2012 00:47; edited 2 times in total |
|