Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


amel27, Спасибо, добавил указанное условие и удалил вначале строчку sFldr = Wscript.Arguments.Item(0), чтобы не указывать диск самому, но ничего не происходит. Скрипт выполняется без ошибок, но никаких действий нет, я так понял из-за того, что не заменили переменную sFldr в остальных местах.

В указанном условии:
Код: Выделить весь код
For Each objDrive In objFSO.Drives
   If objDrive.DriveType=2 And objDrive.IsReady Then
      ClearDir objDrive.DriveLetter, cInclFiles, cExclFolders
   End if 
Next
Мы заменили переменную sFldr на objDrive.DriveLetter:
Код: Выделить весь код
было:
ClearDir sFldr, cInclFiles, cExclFolders

стало:
ClearDir objDrive.DriveLetter, cInclFiles, cExclFolders
Но в самой функции Sub ClearDir переменная sFldr осталась. я попытался заменить по аналогии на objDrive.DriveLetter, но результата так же не было, может я чего упустил, вот что получилось в итоге:
Код: Выделить весь код
Dim objDrive

cInclFiles = Array( _
   "\\~\$[^\\]+$", _
   "\.(TXT|MP3)$")

cExclFolders = Array( _
   "^.:\\Documents and Settings$", _
   "^.:\\Program Files$", _
   "^.:\\System Volume Information$", _
   "^.:\\WINDOWS$" )

RegExpComp cInclFiles
RegExpComp cExclFolders

Set objFSO = CreateObject("Scripting.FileSystemObject")

For Each objDrive In objFSO.Drives
   If objDrive.DriveType=2 And objDrive.IsReady Then
      ClearDir objDrive.DriveLetter, cInclFiles, cExclFolders
   End if 
Next

Sub ClearDir(objDrive.DriveLetter, cIncl, cExcl)
   On Error Resume Next
   Dim oD, cF, cD, oI, iR

   For iR=0 To UBound(cExcl)
      If cExcl(iR).Test(objDrive.DriveLetter) Then Exit Sub
   Next

   Set oD = objFSO.GetFolder(objDrive.DriveLetter)
   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

Отправлено: 11:08, 15-05-2010 | #5