Цитата Francyz:
в самой функции Sub ClearDir переменная sFldr осталась. я попытался заменить по аналогии на objDrive.DriveLetter, но результата так же не было, может я чего упустил »
|
переменные в скрипте и в функции - это разные переменные, хоть и называются одинаково, так их менять ни в коем случае нельзя, ошибка была в другом - в букве диска objDrive.DriveLetter не хватало двоеточия:
Код:
cInclFiles = Array( _
"\\~\$[^\\]+$", _
"\.(TMP|BAK|TEMP)$")
cExclFolders = Array( _
"^.:\\Documents and Settings$", _
"^.:\\Program Files$", _
"^.:\\System Volume Information$", _
"^.:\\WINDOWS$" )
RegExpComp cInclFiles
RegExpComp cExclFolders
Set oFSO = CreateObject("Scripting.FileSystemObject")
For Each oDrive In oFSO.Drives
If oDrive.DriveType=2 And oDrive.IsReady Then
ClearDir oDrive.DriveLetter & ":", cInclFiles, cExclFolders
End If
Next
Sub ClearDir(sFldr, cIncl, cExcl)
On Error Resume Next
Dim oD, cF, cD, oI, iR
For iR=0 To UBound(cExcl)
If cExcl(iR).Test(sFldr) Then Exit Sub
Next
Set oD = oFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders
For Each oI In cF
For iR=0 To UBound(cIncl)
If cIncl(iR).Test(oI.Path) Then
WScript.Echo "File : " & oI.Path
oI.Attributes = 0
oI.Delete
Exit For
End If
Next
Next
For Each oI In cD
ClearDir oI.Path, cIncl, cExcl
Next
If oD.Size >0 Then Exit Sub
WScript.Echo "Folder: " & oD.Path
oD.Attributes = 0
oD.Delete
End Sub
Sub RegExpComp(aReg)
Dim iReg, sReg
For iReg=0 To UBound(aReg)
sReg = aReg(iReg)
Set aReg(iReg) = CreateObject("VBScript.RegExp")
aReg(iReg).Pattern = sReg
aReg(iReg).IgnoreCase = True
Next
End Sub