Flasher

|
Posted: Thu Jan 12, 2012 09:19 Post subject: |
|
|
Вот это уже более менее понятно.
Можно не выделять и не сортировать:
Code: | '=====================================================================
' Попарное склеивание убывающих и возрастающих по размеру файлов
' Если выбран только один файл, то участвуют
' все текстовые файлы корня активной панели
' Параметры %L "%P" "<Путь получателя>" <расширение файлов>
' Пример: %L "%P" "%T" txt
' Автор - Flasher ©
'=====================================================================
With WScript.Arguments
If .Count = 0 Then WScript.Quit
List = .Item(0) : Path = .Item(1)
Targ = .Item(2) : Ext = .Item(3)
End With
If Right(Targ, 1) <> "\" Then Targ = Targ & "\"
L = vbNewLine
Set FSO = CreateObject("Scripting.FileSystemObject")
Mass = Split(FSO.OpenTextFile(List, 1).ReadAll, L)
Max = Ubound(Mass)
If Max = 1 Then
For Each F in FSO.GetFolder(Path).Files
If StrComp(Ext, FSO.GetExtensionName(F), 1) = 0 Then S = S & F & L
Next
Mass = Split(S, L) : Max = Ubound(Mass)
End If
If Max Mod 2 Then
MsgBox "Необходимо выбрать чётное число файлов!", 48,_
Space(32) & "Склеивание файлов" : Quit
End If
Set Dict = CreateObject("ADODB.Recordset")
Dict.Fields.Append "Name", 200, 255
Dict.Fields.Append "Size", 3 : Dict.Open
For Each F In Mass
If F <> "" Then
If Not FSO.FileExists(F) Then
MsgBox "Снимите выделение с каталогов!", 48,_
Space(22) & "Склеивание файлов" : Quit
End If
Dict.AddNew : Dict("Name") = F
Dict("Size") = CLng(FSO.GetFile(F).Size) : Dict.Update
End If
Next
Dict.Sort = "Size DESC"
Sort = Split(Dict.GetString, vbCr)
For i = 0 to Max/2 - 1
Str1 = Sort(i) : N1 = Left(Str1, InStrRev(Str1, vbTab) - 1)
Str2 = Sort(Max-i-1) : N2 = Left(Str2, InStrRev(Str2, vbTab) - 1)
FSO.OpenTextFile(Targ & FSO.GetFileName(N1), 2, True, -2).Write _
FSO.OpenTextFile(N1,,,-2).ReadAll & L & "<p></p>" & _
L & FSO.OpenTextFile(N2,,,-2).ReadAll
Next : Quit
Sub Quit : Set FSO = Nothing : Set Dict = Nothing : WScript.Quit
End Sub |
|
|