【问题标题】:Using VBScript to find most recent file date in a single folder使用 VBScript 在单个文件夹中查找最近的文件日期
【发布时间】:2012-03-01 14:03:27
【问题描述】:

如何修改此 VBScript 以仅返回最新文件的名称和上次修改日期?目前它返回过去 24 小时内修改的任何内容。我只想查找最新的文件。我从 StackOverflow 借来的,还不是 VBScript 向导。

option explicit  
dim fileSystem, folder, file
dim path   
path = "C:\test"  
Set fileSystem = CreateObject("Scripting.FileSystemObject") 
Set folder = fileSystem.GetFolder(path) 
for each file in folder.Files         
if file.DateLastModified > dateadd("h", -24, Now) then         
'whatever you want to do to process'         
WScript.Echo file.Name & " last modified at " & file.DateLastModified     
end if
next 

【问题讨论】:

    标签: file-io vbscript wsh


    【解决方案1】:

    要处理VBScript 上的文件,建议您使用FileSystemObject

    FileSystemObject 具有以下功能,可帮助您解决问题:

    • FileSystemObject.GetFolder - 返回与指定路径中的文件夹对应的文件夹对象。
    • Folder.Files - 返回一个 Files 集合,其中包含指定文件夹中包含的所有 File 对象。
    • File.DateLastModified - 返回上次修改指定文件或文件夹的日期和时间。

    为了演示,我提供了GetRecentFile(和GetRecentFolder)的实现,它扫描提供的输入路径并通过查找具有最大DateLastModified 属性的文件来确定最新的文件。

    Option Explicit  
    
    Function GetRecentFile(path)
      Dim fso, file
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set GetRecentFile = Nothing
      For Each file in fso.GetFolder(path).Files
        If GetRecentFile is Nothing Then
          Set GetRecentFile = file
        ElseIf file.DateLastModified > GetRecentFile.DateLastModified Then
          Set GetRecentFile = file
        End If
      Next
    End Function
    
    Function GetRecentFolder(path)
      Dim fso, folder
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set GetRecentFolder = Nothing
      For Each folder in fso.GetFolder(path).SubFolders
        If GetRecentFolder is Nothing Then
          Set GetRecentFolder = folder
        ElseIf folder.DateLastModified > GetRecentFolder.DateLastModified Then
          Set GetRecentFolder = folder
        End If
      Next
    End Function
    
    Dim recentFile
    Set recentFile = GetRecentFolder("C:\Temp")
    If recentFile is Nothing Then
      WScript.Echo "No recent files found"
    Else
      WScript.Echo "Recent file is " & recentFile.Name & " " & recentFile.DateLastModified
    End If
    

    参考资料:

    【讨论】:

    • 也适用于查找最近的文件夹。
    【解决方案2】:

    这对我有用!先前答案的一个非常细分的版本。

    Set GetRecentFile = Nothing
    For Each objFile In objFolder.Files
        If GetRecentFile is Nothing then
            Set GetRecentFile = objFile
        ElseIf objFile.DateLastModified > GetRecentFile.DateLastModified then
            Set GetRecentFile = objFile
        End If
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多