vbscript - 删除超过特定期限的文件夹

标签 vbscript

这是我的函数不起作用。它永远不会到达删除调用,因为 if 语句永远不会计算为 true,而且我不明白为什么。

Function DeleteOldFolders(root, maxAgeInDays)

    Dim fso, ofolder, subFolders
    Set fso = CreateObject ("Scripting.FileSystemObject")

    If fso.FolderExists(root) Then

        Set ofolder = fso.GetFolder(root)
        Set subFolders = ofolder.SubFolders

        For Each folder in subFolders
            createdDate = FormatDateTime(folder.DateCreated, "2")

            If (DateDiff("d", createdDate, Date) > maxAgeInDays) Then

                objFSO.DeleteFolder folder, True

            End If
        Next

    End If

    Set objFSO = Nothing

End Function

最佳答案

没有删除任何内容的原因可能是您定义了fso

Set fso = CreateObject ("Scripting.FileSystemObject")

然后使用objFSO

objFSO.DeleteFolder folder, True

并在脚本中的其他位置添加On Error Resume Next(永远不要永远使用它,除非你确切知道你在做什么执行并且有合理的错误处理代码)。

一些旁注(与实际问题无关,但值得考虑):

  • 始终使用Option Explicit。无一异常(exception)。
  • 您可以直接在 DateDiff() 中使用 folder.DateCreated。无需格式化该值。
  • 您的函数不会返回任何内容,因此您最好将其设为过程。

您的过程的简化版本可能如下所示。

Sub DeleteOldFolders(root, maxAgeInDays)
  Dim fso, folder

  Set fso = CreateObject("Scripting.FileSystemObject")

  If fso.FolderExists(root) Then
    For Each folder in fso.GetFolder(root).SubFolders
      If DateDiff("d", folder.DateCreated, Date) > maxAgeInDays Then
        folder.Delete True
      End If
    Next
  End If

  Set fso = Nothing
End Sub

关于vbscript - 删除超过特定期限的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072155/

相关文章:

vbscript - 如何在VBScript中显示几秒钟的提示信息?

vba - 如何在 Windows 上自动切换飞行模式

windows - 下载VBS错误 "(null): 0x80072EE6"

regex - 用于删除字符串中带引号的引号的正则表达式

java - 使用 vbscript/java 在 NTLM 身份验证后自动下载动态生成的文件

css - 如何修改vbs以归档事件日志

file - bat 文件一次读取一行并执行命令,然后移至下一行

Windows 资源管理器显示文件时出现 VBScript OpenTextFile 文件未找到错误

vbscript - ADODB.Parameters 错误 '800a0e7c' 参数对象定义不正确。提供的信息不一致或不完整

windows - 使用 vbscript 检查计划任务是否正在运行