VBScript 异常在记录使用用于 oFSO.deletefolder 的变量删除目录时发生

问题描述 投票:0回答:1

如果我将该变量切换为任何其他变量,包括文件删除循环中使用的

s
,它工作正常。使用我用来删除发送到 WriteToLog 函数的文件夹 (
sSubFolder
) 的变量,它会产生所示的错误。我到底错过了什么?

  oFSO.deletefile s, True

  if Err then

    WriteToLog("-- Error deleting file """ & s & """. Err.number = """ & Err.Number & """; Err.Description = """ & Err.Description & """")

  else

    WriteToLog("-- File """ & s & """ succesfully deleted")

  end if

next

if not sSubFolder = sRootFolder then

  oFSO.deletefolder sSubFolder, True

  if Err then

    WriteToLog("-- Error deleting folder """ & sSubFolder & """. Err.number = """ & Err.Number & """; Err.Description = """ & Err.Description & """")

  else

Line 109   WriteToLog("-- Folder """ & sSubFolder & """ succesfully deleted")

  end if

enter image description here

vbscript
1个回答
0
投票

记录文件和文件夹的删除

Option Explicit
    
Main
    
Sub Main()

    Const sRootFolder = "C:\Test"
    Const sSubFolder = "C:\Test\Test1"
    Const s = "C:\Test\Test1\Test.txt"
    
    Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
    
    WriteToLog GetDeleteFileInfo(fso, s, True)
    
    If sSubFolder <> sRootFolder Then
        WriteToLog GetDeleteFolderInfo(fso, sSubFolder, True)
    Else ' is root folder, e.g.:
        MsgBox "Cannot delete root folder """ & sRootFolder & """!", vbExclamation
    End If

End Sub

Function GetDeleteFileInfo(fso, FilePath, DeleteReadOnly)
    Dim ErrNumber, ErrDescription
    On Error Resume Next
        fso.DeleteFile FilePath, DeleteReadOnly
        ErrNumber = Err.Number
        ErrDescription = Err.Description
    On Error GoTo 0
    'MsgBox ErrNumber & vblf & vblf & ErrDescription, vbCritical
    If ErrNumber = 0 Then
        GetDeleteFileInfo = "-- File """ & FilePath _
            & """ succesfully deleted"
    Else
        GetDeleteFileInfo = "-- Error deleting file """ & FilePath _
            & """. Err.number = """ & ErrNumber _
            & """; Err.Description = """ & ErrDescription & """"
    End If
End Function

Function GetDeleteFolderInfo(fso, FolderPath, DeleteReadOnly)
    Dim ErrNumber, ErrDescription
    On Error Resume Next
        fso.DeleteFolder FolderPath, DeleteReadOnly
        ErrNumber = Err.Number
        ErrDescription = Err.Description
    On Error GoTo 0
    'MsgBox ErrNumber & vblf & vblf & ErrDescription, vbCritical
    If ErrNumber = 0 Then
        GetDeleteFolderInfo = "-- Folder """ & FolderPath _
            & """ succesfully deleted"
    Else
        GetDeleteFolderInfo = "-- Error deleting folder """ & FolderPath _
            & """. Err.number = """ & ErrNumber _
            & """; Err.Description = """ & ErrDescription & """"
    End If
End Function

' Just for testing!
Sub WriteToLog(Info)
    MsgBox Info, vbInformation, "Testing Only"
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.