'=======================================================
' Дописать в имена файлов в структуре активного каталога
' номерной префикс от 0001 до числа фильтрованных файлов
' при включении алфавитной сортировки (по умолч. прямой)
' Условие: путь запуска - пустой
' Параметры (необязательные): <фильтр-список расширений>
' <cортировка обратная: 1>
' Примеры: *.jpg;*.jpeg | *.* 1
'=======================================================
With WScript.Arguments
If .Count Then If .Item(0) <> "" Then Filt = .Item(0) Else Filt = "*.*"
If .Count = 2 Then Sort = .Item(1)
End With : Set ShA = CreateObject("Shell.Application")
Set Lst = CreateObject("System.Collections.ArrayList")
Set FSO = CreateObject("Scripting.FileSystemObject")
CD = FSO.GetAbsolutePathName("")
If CD = FSO.GetParentFolderName(WScript.ScriptFullName) Then WScript.Quit
ForFolder CD : MsgBox "Выполнено!", 4160, " Переименование с нумерацией "
Sub ForFolder(Path)
Set Items = ShA.NameSpace(Path).Items
Items.Filter 73920, Filt
If Items.Count Then
For Each F in Items : Lst.Add CStr(F) : Next
Lst.Sort : If Sort = 1 Then Lst.Reverse
For Each F in Lst
i = i + 1 : If Len(i) < 4 Then i = String(4 - Len(i), "0") & i
N = i & FSO.GetFileName(F)
FSO.GetFile(Path & "\" & F).Name = N
Next : Lst.Clear
End If : Items.Filter 73888, "*"
For Each Fold in Items : ForFolder Fold.Path : Next
End Sub |