Flasher

|
Posted: Sat Feb 16, 2013 22:39 Post subject: |
|
|
Iori
| Code: | '•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Cоздать указанное число копий для каждого выбранного элемента
' с добавлением счётчика в скобках, начиная с последнего номера
' Параметры: %WL "<путь назначения>" <число копий>
' Пример: %WL "%P" 5
' Автор - Flasher ©
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
With WScript.Arguments
If .Count = 0 Then WScript.Quit
If .Count <> 3 Then MsgBox "Должно быть указано три параметра!", 48 : WScript.Quit : End If
List = .Item(0) : Path = .Item(1) : Count = .Item(2)
End With : If Right(Path, 1) <> "\" Then Path = Path & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Path)
Set SFolds = Folder.SubFolders : Set SFiles = Folder.Files
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, vbNewLine)
If F <> "" Then
If FSO.FolderExists(F) Then Test = 1 Else Test = 0
If Test Then Set SF = SFolds Else Set SF = SFiles
TestF F, Ext, Ent, BN
If Ent And Right(BN, 1) = ")" Then
M = Mid(BN, Ent + 1, Len(BN) - Ent - 1)
If IsNumeric(M) Then Max = CLng(M)
BN = Left(BN, Ent - 2)
End If
For Each FF in SF
TestF FF, Ext1, Ent1, BN1
If Ext = Ext1 And BN & " (" = Left(BN1, Len(BN) + 2) Then
If Ent1 And Right(BN1, 1) = ")" Then
Num = Mid(BN1, Ent1 + 1, Len(BN1) - Ent1 - 1)
If IsNumeric(Num) Then
Num = CLng(Num) : If Max < Num Then Max = Num
End if
End If
End If
Next
For i = 1 To Count
If Test Then FSO.GetFolder(F).Copy Path & BN & " (" & Max + i & ")", 0 _
Else FSO.CopyFile F, Path & BN & " (" & Max + i & ")." & Ext, 0
Next
End If : Set SF = Nothing
Next : Set SFiles = Nothing : Set SFolds = Nothing
Set Folder = Nothing : Set FSO = Nothing : WScript.Quit
Sub TestF(Fl, Ex, E, B)
If FSO.FolderExists(Fl) Then
B = FSO.GetFileName(Fl)
Else
B = FSO.GetBaseName(Fl) : Ex = LCase(FSO.GetExtensionName(Fl))
End If : E = InStrRev(B, "(")
End Sub | Вместо сортировки по старинке - максимум.
Понимает имена с юникодными символами.
Выбраны могут быть в т.ч. элементы <имя (№)>, будут создаваться <имя (№+1)>.
В случае, если получатель отличается от источника, и в нём нет копий со счётчиком, отчёт будет идти от № текущего элемента. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|