首页 文章

如何在VBScript中的文件夹中获取特定大小的最近修改的文件

提问于
浏览
0

这是问题所在:

我有一个包含许多文本文件的文件夹 . 我想找到我需要解析的文件;但是,每次都有不同的名称,所以我不能使用文件名 . 我所知道的是它总是39KB(虽然每次都略有不同,所以我检查> 39000和<40000) . 但是,文件夹中通常有几个相同大小的文件,我想选择最近修改过的MOST文件 .

是)我有的:

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被替换为对该文件进行解析的特定函数的调用 .

谢谢 .

2 回答

  • 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
    

    (我只是用 IsEmpty 替换 IsNull

  • 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
    

相关问题