需求:复制A文件夹下的文件到B文件夹下,支持按文件修改时间(或文件名带有时间信息)排序获取最近几个文件。
sourcefilespath="F:\source" '源目录
destfilepath="F:\dest\" '目标目录
Set dic=CreateObject("Scripting.Dictionary")
Set fso=CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(desfilepath) Then
fso.CreateFolder desfilepath
End If
GetLastModify(sourcefilespath)
'msgbox "Finish"
Function GetLastModify(folder)
Set fso = createobject("scripting.FileSystemObject")
Set Folder=fso.getFolder(folder)
Set subFolders = Folder.Files
dim filePath
dim dateStr
dim fileDate
nowdate= Now
For Each subFolder In subFolders
'方法1:文件名带有日期:FY2G_FY2G2021021801013D.JPG
dateStr = Mid(fso.GetFileName(subFolder.path),10,12)
dateStr = left(dateStr,4) & "-" & mid(dateStr,5,2) & "-" & mid(dateStr,7,2)& " " & mid(dateStr,9,2)& ":" & right(dateStr,2)
fileDate = CDate(dateStr)
'subFolder.DateLastModified 方法2:获取文件修改时间
If Not dic.Exists(datediff("s",fileDate,nowdate)) Then
dic.Add datediff("s",fileDate,nowdate),subFolder.path
End If
Next
NumArray=dic.Keys
bn = NumArray(0)
For i=0 To 9 '复制10个文件
For Each nn In NumArray
If bn >= nn Then
bn = nn
End If
Next
filePath = dic.Item(bn)
fso.CopyFile filePath,desfilepath&i&".jpg" '重命名
'fso.CopyFile filePath,desfilepath&fso.GetFileName(filePath) '直接原文件名复制
dic.Remove(bn)
NumArray=dic.Keys
bn = NumArray(0)
Next
End Function