【问题标题】:How to get the most recently modified file of a certain size in a folder in VBScript如何在VBScript中的文件夹中获取最近修改的一定大小的文件
【发布时间】:2013-02-24 10:13:59
【问题描述】:

问题来了:

我有一个包含许多文本文件的文件夹。我想找到我需要解析的文件;但是,它每次都有不同的名称,所以我不能使用文件名。我所知道的是它总是 39KB(虽然每次都略有不同,所以我检查 >39000 和

我有什么:

If fNewest = "" Then
      Set fNewest = objFile
    ElseIf fNewest.DateLastModified < objFile.DateLastModified Then
      Set fNewest = objFile
    End If

    If (objFile.Size > 39000 and objFile.Size < 40000) Then
      Msgbox fNewest
    End If

虽然 fNewest 返回我想要的文件的路径(最近修改的 39Kb 文件),但 Msgbox 被调用了 4 次(这是该文件夹中 39Kb 文件的出现次数)。有谁知道我可以如何修改此代码以更正此问题,或以更好的方式运行此检查?

我的终极目标是有一个如上所述的条件语句,因此 Msgbox 被替换为对获取该文件并解析它的特定函数的调用。

谢谢。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    您的嵌套已关闭。 MsgBox 应该在您迭代文件夹中文件的循环之外,并且分配应该在检查文件大小的条件内。试试这个:

    Set fso = CreateObject("Scripting.FileSystemObject")
    
    For Each f In fso.GetFolder("...").Files
      If f.Size > 39000 and f.Size < 40000 Then
        If IsEmpty(newest) Then
          Set newest = f
        ElseIf newest.DateLastModified < f.DateLastModified Then
          Set newest = f
        End If
      End If
    Next
    
    If Not IsNull(newest) Then MsgBox newest.Name
    

    【讨论】:

    • 运行时错误:Object required: fNewest on the line ElseIf fNewest.DateLastModified &lt; objFile.DateLastModified Then ...上面声明为 Dim。
    【解决方案2】:
    Dim newest, fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    For Each f In fso.GetFolder(".").Files
      If f.Size > 39000 and f.Size < 40000 Then
        If IsEmpty(newest) Then
          Set newest = f
        ElseIf newest.DateLastModified < f.DateLastModified Then
          Set newest = f
        End If
      End If
    Next
    
    If Not IsEmpty(newest) Then MsgBox newest.Name
    

    (我只是将IsNull 替换为IsEmpty

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 2018-11-17
      • 1970-01-01
      • 2012-04-16
      • 2014-10-28
      • 1970-01-01
      • 2014-12-29
      • 2021-04-12
      相关资源
      最近更新 更多