Продолжайте получать «объект требуется» Ошибка.Пробовал устранять неисправности какое-то время безрезультатно. - PullRequest
0 голосов
/ 05 декабря 2018

Я продолжаю получать ошибку требуемого объекта в строке 32 для "oFileCollection" и не уверен, что причиной проблемы является функция, не получающая информацию из Case, или если функция должна иметь весь аргумент и код внутриэто для того, чтобы получить информацию.

    Option Explicit
Dim sDirectoryPath,Search_Days,iDaysOld,CmdArg_Object,lastModDate
Dim oFSO,oFolder,oFileCollection,oFile,oTF, SubFolder
'------------------------------------------------------

Set CmdArg_Object = Wscript.Arguments 

Select Case (CmdArg_Object.Count) 
    Case 2 
      sDirectoryPath = CmdArg_Object.item(0) 
      Search_Days = CmdArg_Object.item(1) 
    Case Else 
      WScript.Echo "SearchFiles.vbs requires 2 parameters:" &_ 
        vbcrlf & "1) Folder Path" &_ 
        vbcrlf & "2) # Days to Search" 
      WScript.Quit 
End Select 

Set oFSO = CreateObject("Scripting.FileSystemObject")
iDaysOld=Date+(-1*Search_Days)
Set oTF = oFSO.CreateTextFile("C:\Old Files.txt")

WScript.Echo Now & " - Beginning " & Search_Days & " day search of " & sDirectoryPath


TraverseFolders oFSO.GetFolder(sDirectoryPath)
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files

Function TraverseFolders (FolderName)

    Set SubFolder = oFileCollection 
    For Each SubFolder In FolderName.SubFolders
        TraverseFolders (SubFolder)
    Next


    For Each oFile In SubFolder.Files
        lastModDate = oFile.DateLastModified 
        If (lastModDate <= iDaysOld) Then
        oTF.WriteLine (oFile.Path)
        oTF.WriteLine (oFile.DateLastModified)
        oTF.WriteLine ("-----------------------")
        End If
    Next 

End Function
WScript.Echo "Now - Finished"

1 Ответ

0 голосов
/ 05 декабря 2018

Вот мой довольно старый пример;отправлено как есть без изменений…

Функция ShowFolderListPlus анализирует предоставленную папку и рекурсивно вызывает себя для всех подпапок.

option explicit
Dim MyFolder, MyAgeLimitInDays, objFSO, numDateDiff, sResult
MyFolder = "C:\testC"
MyAgeLimitInDays = 365
sResult = "" 
Set objFSO = CreateObject( "Scripting.FileSystemObject")

ShowFolderListPlus( MyFolder)
WScript.Echo  "Testing files older/newer than " & Cstr( MyAgeLimitInDays) _
  & " days:" & vbNewLine & sResult
WScript.Quit 

Function ShowFolderListPlus( FolderToAnalyse)
  Dim objFolder, itemFile, itemFldr, colFileList, colSubFldr, parFolder, sc, sa
  sa = String( DepthOfPath( FolderToAnalyse), "-")
  sc = FolderToAnalyse & " " & sa & vbNewLine
  Set objFolder = objFSO.GetFolder( FolderToAnalyse)
  Set colFileList = objFolder.Files
  For Each itemFile in colFileList
    If StrComp( Right( itemFile.name, 4), ".bat", vbTextCompare) = 0 Then
      'exclude files of specified extension' 
    Else
      numDateDiff = DateDiff("d", itemFile.DateCreated, now) 
      If numDateDiff > MyAgeLimitInDays Then
        sc = sc & sa & "old "
        '''-------------------------------'''
        ''' objFSO.DeleteFile( itemFile)  ''' delete file older than limit  
        '''-------------------------------'''
      Else
        sc = sc & sa & "new "
      End If
      sc = sc & itemFile.name & " " & numDateDiff & vbNewLine
    End If
  Next
  Set colSubFldr = objFolder.SubFolders
  For Each itemFldr in colSubFldr
    parFolder = FolderToAnalyse & "\" & itemFldr.name
    ShowFolderListPlus( parFolder) 'calls the procedure itself recursively'
  Next
  sResult = sc & sResult
  ShowFolderListPlus = sc
End Function

Function DepthOfPath( strPth)
Dim AuxArray
AuxArray = Split( strPth, "\", -1, vbTextCompare)
DepthOfPath = UBound( AuxArray)
End Function

Пример вывода :

==> cscript D:\VB_scripts\Oldies\Folders\filescolection_in_subfolders.vbs
Testing files older/newer than 365 days:
C:\testC -
-old bar.txt 777
-old foo.txt 777
C:\testC\NewFolder21 --
--old NewTextFile1 1289
--new NewTextFile2 162
C:\testC\a --
C:\testC\43381802 --
--old MailCliеnt.txt 582
--old q44554519.html 538
C:\testC\43381802\bubu ---
---new 3-3-2018-.png 277
---old NewTextDocument.txt 1146
---old output.txt 1146
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...