При выполнении сценария удаления получено сообщение об ошибке с неправильным количеством аргументов или ошибочным присвоением свойства: 'objFolder.Files.Item' - PullRequest
0 голосов
/ 27 января 2020

Я написал VBScript для удаления файлов из папки, которые старше на 30 дней. даже мне нужно добавить запись в лог-файл. Но здесь мне нужно перечислить имена файлов, которые были удалены в лог-файл. при этом я получаю ошибку.

  Const strPath = "D:\TextReport\"
    Dim objFSO
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set LogFile = objFSO.CreateTextFile("D:\Text\ASD.txt", true)
    LogFile.WriteLine "DateTime: " & Now
    LogFile.WriteLine "UserName: " & CreateObject("WScript.NetWork").UserName

    Call Search (strPath)

    ' Comment out below line if you'd like to use this script in windows schedule task
    WScript.Echo"Done."

    Sub Search(str)
        Dim objFolder, objSubFolder, objFile
        Set objFolder = objFSO.GetFolder(str)
        For Each objFile In objFolder.Files

            ' Use DateLastModified for modified date of a file
            If objFile.DateLastModified < (Now() - 30) Then
                objFile.Delete(True)
            End If  
        LogFile.WriteLine (objFolder.Files.Item.Name)
        Next
        For Each objSubFolder In objFolder.SubFolders
            Search(objSubFolder.Path)

            ' Files have been deleted, now see if the folder is empty.
            If (objSubFolder.Files.Count = 0) Then
                objSubFolder.Delete True
            End If

        Next

    End Sub

    LogFile.Close
    WScript.Echo "Finished"

1 Ответ

0 голосов
/ 28 января 2020

Вы пытаетесь получить имя файла, который вы удалили. Зарегистрируйте имя внутри даты проверки.

If objFile.DateLastModified < (Now() - 30) Then
    LogFile.WriteLine objFile.Name
    objFile.Delete(True)
End If 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...