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

时间:2013-03-08 18:57:07

标签: vbscript

问题在于:

我有一个包含许多文本文件的文件夹。我想找到我需要解析的文件;但是,每次都有不同的名称,所以我不能使用文件名。我所知道的是它总是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 个答案:

答案 0 :(得分:2)

你的筑巢已关闭。 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

答案 1 :(得分:1)

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