File io 使用VBScript在单个文件夹中查找最近的文件日期

File io 使用VBScript在单个文件夹中查找最近的文件日期,file-io,vbscript,wsh,File Io,Vbscript,Wsh,如何修改此VBScript以仅返回最新文件名和上次修改日期?目前,它返回过去24小时内修改的任何内容。我只想查找最新的文件。我是从StackOverflow借用的,它还不是VBScript向导 option explicit dim fileSystem, folder, file dim path path = "C:\test" Set fileSystem = CreateObject("Scripting.FileSystemObject") Set folder = f

如何修改此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 

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

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

  • FileSystemObject.GetFolder
    -返回与指定路径中的文件夹对应的文件夹对象
  • 文件夹.Files
    -返回由指定文件夹中包含的所有文件对象组成的文件集合
  • 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
参考资料:


    • 这对我来说很有效!之前答案的一个非常详细的版本

      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
      

      也适用于查找最近的文件夹。