'••••••••••••••••••• VBS •••••••••••••••••••
' Обнулить выбранные в активной панели
' или в структурах выбранных каталогов файлы
' Параметры: %WL <маска файлов> <рекурсия:1>
' Примеры: %WL | %WL *.txt;*.log 1
'••••••••••••••••••••••••••••• Flasher © •••
With WSH.Arguments
C = .Count : If C = 0 Then WSH.Quit
List = .Item(0) : If C > 1 Then Mask = .Item(1)
If C = 3 Then Rec = .Item(2)
End With : Title = " Обнуление файлов "
If Msgbox("Выбранные файлы будут обнулены." & vbCr &"Вы" &_
" уверены, что хотите продолжить?", 4132, Title) <> 6 Then WSH.Quit
Dim x : If Mask = "" Then Mask = "*.*"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShAp = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(List,,,-1)
Do : F = List.ReadLine : If Len(F) > 259 Then F = "\\?\" & F
If FSO.FileExists(F) Then
If Mask = "*.*" Or InStr(";" & Mask &_
";", ";*." & FSO.GetExtensionName(F) & ";") Then FFile F
ElseIf FSO.FolderExists(F) Then FFolder F End If
Loop Until List.AtEndOfStream : List.Close
If x Then Text = "Число обнулённых файлов: " & x : N = 4160 _
Else Text = "Подходящие объекты не выбраны!" : N = 4144
CreateObject("WScript.Shell").Popup Text, 2, Title, N
Sub FFolder(Fold)
Set Items = ShAp.Namespace(Fold).Items
Items.Filter 73952, Mask
If Items.Count Then
For Each I in Items
If FSO.FileExists(I.Path) Then FFile I.Path
Next
End If : If Rec = 1 Then _
For Each Fd in FSO.GetFolder(Fold).SubFolders : FFolder Fd.Path : Next
End Sub
Sub FFile(File)
With FSO.GetFile(File)
If .Size Then
x = x + 1 : A = .Attributes
If (A And 1) = 1 Then .Attributes = A - 1 : R = 1
.OpenAsTextStream(2).Close : If R Then .Attributes = A
End If
End With
End Sub |