仅获取子文件夹的文件夹大小,而忽略任何其他内容?

2024-04-02

我创建了下面的脚本,它管理和维护 RootFolder 中分配的存储,其中存储每日备份,每个备份都存储在其自己的单独文件夹中,并且如果 RootFolder 内容超过预设限制,则最旧的备份文件夹将被删除。

到目前为止,一切都很好 。 。 。我遇到的问题是,较大的文件也可能被添加到 RootFolder [strHomeFolder] 中,因此也包含在总累积“大小”中。因此,备份文件夹可能会被过早删除,并且在最坏的情况下,所有文件夹都可能被完全删除,不幸的是,这可能在某种程度上违背了备份的目的!

因此,我正在寻求建议,使 objFSO.GetFolder 仅检查位于 RootFolder 内的所有备份文件夹的内容,同时忽略该级别的任何文件。

strOldestFolder = ""
dtmOldestDate = Now

Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%\HDBackups")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strHomeFolder)

intFolderSize = Int((objFolder.Size / 1024) / 1024)

If intFolderSize >= 50 Then ' change as appropriate value in MBytes
    Set objSubFolders = objFolder.SubFolders
    For Each objFolder in objSubFolders
        strFolder = objFolder.Path
        dtmFolderDate = objFolder.DateCreated
        If dtmFolderDate < dtmOldestDate Then
            dtmOldestDate = dtmFolderDate
            strOldestFolder = strFolder
        End If
    Next
    objFSO.DeleteFolder(strOldestFolder)
End If

只需循环根文件夹的SubFolders并总结intFolderSize:

strOldestFolder = ""
dtmOldestDate = Now

Set objShell = CreateObject("WScript.Shell")
strHomeFolder = objShell.ExpandEnvironmentStrings("%USERPROFILE%\HDBackups")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strHomeFolder)

Dim objSubFolder
intFolderSize = 0
For Each objSubFolder In objFolder.SubFolders
    intFolderSize = intFolderSize + objSubFolder.Size
Next

intFolderSize = Int((intFolderSize / 1024) / 1024)

If intFolderSize >= 50 Then ' change as appropriate value in MBytes
    Set objSubFolders = objFolder.SubFolders
    For Each objFolder In objSubFolders
        strFolder = objFolder.Path
        dtmFolderDate = objFolder.DateCreated
        If dtmFolderDate < dtmOldestDate Then
            dtmOldestDate = dtmFolderDate
            strOldestFolder = strFolder
        End If
    Next
    objFSO.DeleteFolder (strOldestFolder)
End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅获取子文件夹的文件夹大小,而忽略任何其他内容? 的相关文章

  • 从批处理文件运行 vbscript

    我只需要编写一个简单的批处理文件来运行 vbscript vbscript 和批处理文件位于同一文件夹中 并且位于 SysWOW64 目录中 因为 vbscript 只能在该目录中执行 目前我的批处理文件如下 echo off WINDIR
  • JavaScript 是否有相当于 VBScript 的 ExecuteGlobal 的功能?

    javascript 中是否有 ExecuteGlobal 的替代方案 Function vbExecuteGlobal parmSCRIPT ExecuteGlobal parmSCRIPT End Function DevGuru 描述
  • 仅获取子文件夹的文件夹大小,而忽略任何其他内容?

    我创建了下面的脚本 它管理和维护 RootFolder 中分配的存储 其中存储每日备份 每个备份都存储在其自己的单独文件夹中 并且如果 RootFolder 内容超过预设限制 则最旧的备份文件夹将被删除 到目前为止 一切都很好 我遇到的问题
  • 在wix中,使用vbscript,如何写入日志文件?

    我正在自定义操作中尝试以下操作 Session Log GetOfficeBitness Session Property OfficeBitness 我收到错误 错误 1720 此 Windows Installer 程序包有问题 A 无
  • VBS 脚本查找特定扩展名的所有文件并将它们复制到特定目的地

    我正在制作一个项目 通过创建一个脚本来在工作中使用来自动化我们的一个流程 我希望脚本检查用户名的输入 以搜索指定的用户配置文件路径中的任何 doc docx pdf pst 等文件 并将它们按原样复制到网络驱动器位置上创建的文件夹中 我的主
  • 如何在.net core或.net standard项目中运行VBScript?

    我知道这是死胡同而且愚蠢的想法 但仍然 您知道在 Net Core 或 Net Standard 项目中运行 VBScript 的任何 nuget 或解决方法吗 我尝试使用 ClearScript V8 nuget https www nu
  • SetTimeout() 不会执行该函数

    这是我的代码片段 in VBScript Sub Main Dim timeoutTimer more scripts here more scripts here more scripts here timeoutTimer window
  • 并排启动两个资源管理器窗口

    有没有办法使用批处理脚本并排 垂直平铺 启动两个资源管理器窗口 如果没有 我该如何使用 VBS 来做到这一点 我已经修改了上面的VBS脚本Hackoo完全按照OP的要求去做 脚本中的注释准确地解释了它将做什么 如果两个窗口未设置到正确位置
  • 我可以直接从命令行运行 vbscript 命令(即没有 vbs 文件)吗?

    在Python中你没有义务使用文件 你可以指定 c 并通过命令行上的字符串将 Python 命令提供给 Python 解释器 我可以用 vbscript 达到相同的结果吗 我见过需要您使用批处理脚本的解决方案 但是如果我所在的系统具有零写入
  • 由 VBScript 运行的 xPath 中的未知方法

    错误消息是 msxml3 dll 未知方法 Record CelloXml Integration Case ServiceEvent gt last 我的代码如下所示 错误出在案例上NEW Case OLD可以很好地配合 0 在那里 On
  • CDO.消息编码问题

    我们目前正在将邮件递送系统更改为仅使用UTF 8 发件人姓名似乎有问题 当电子邮件包含非 ASCII 字符 希伯来语 时 主题和正文呈现正常 但发件人姓名 如出现在我的 gmail 帐户中 变为 有一行代码 myMail BodyPart
  • VB错误“需要对象”

    当我运行以下脚本时 我在第 54 行 最后一行 收到 需要对象 错误 怎么了 Option Explicit Dim cmdString g strHostFile filepath flexnetpath importcmd dtmTod
  • WScript.Shell.Exec - 从 stdout 读取输出

    我的 VBScript 不显示我执行的任何命令的结果 我知道命令被执行 但我想捕获结果 我已经测试了多种方法来执行此操作 例如以下方法 Const WshFinished 1 Const WshFailed 2 strCommand pin
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 为什么根据检索顺序从 ADO Recordset 中获取空值而不是正确值? (DB表有NTEXT值)

    我有一个数据库表有两个datetime我需要使用 VBScript 从 ASP 页面读取可为空的列 这是我写的代码 Set cmd Server CreateObject ADODB Command With cmd ActiveConne
  • VBScript 中的对象/类字典

    vbscript 中是否可以有对象 类的字典 例如 Class employeeclass Public first last salary End Class Dim employeedict Set employeedict Creat
  • 有关于 VBScript 正则表达式对象 (RegExp) 的好文档吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们都知道每个正则表达式实现都有其自身的特点 我需要在使用 COM 自动化的应用程序中使用 Micros
  • 根据用户名获取广告详细信息

    我有一个代码可以从 AD 检索用户的详细信息 例如电子邮件地址 电话号码等 我当前使用的代码是 Set objSysInfo CreateObject ADSystemInfo strUser objSysInfo UserName msg
  • 在vbscript中读取文本文件的某一行

    有没有办法使用 vbscript 读取文本文件的某一行并将其存储为变量 谢谢 试试这个例子 Option Explicit Dim ws MyFile Set ws CreateObject WScript Shell MyFile Win
  • 如何使用 VBS 将 ping 写入文本文件

    如果我使用 VBS 运行一些 CMD 命令 在本例中为 ping 如何使用 VBS 而不是 DOS 将命令写入文本文件 Set objCmdTest WScript CreateObject WScript Shell Set Output

随机推荐