我只有以下文件。
New Text Document - Copy (1)
New Text Document - Copy (2)
New Text Document - Copy (3)
New Text Document - Copy (4)
New Text Document - Copy (5)
除此之外我还有类似
的东西Test1.pdf
test2.pdf
Test3.pdf
我的要求是找到文件名为“New Text Document”的最新文件
答案 0 :(得分:1)
为了帮助您入门:
' need a FSO for folder access
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
' hold the file found (if any)
Dim oFiFnd : Set oFiFnd = Nothing
' smallest possible number
Dim nMax : nMax = 0
' define which files to consider
Dim reFiNa : Set reFiNa = New RegExp
reFiNa.Pattern = "^New Text Document - Copy \((\d+)\)$"
Dim oFile, oMTS
' look at all files in folder
For Each oFile In oFS.GetFolder("..\testdata\17405017").Files
Set oMTS = reFiNa.Execute(oFile.Name)
If 1 = oMTS.Count Then
' file confirms to pattern
If nMax < CLng(oMTS(0).SubMatches(0)) Then
' largest nMax seen so far
nMax = CLng(oMTS(0).SubMatches(0))
Set oFiFnd = oFile
End If
End If
Next
If oFiFnd Is Nothing Then
' search failed
WScript.Echo "No file found."
Else
' success
WScript.Echo "found", oFiFnd.Path
End If
更新评论:
如果RegExp找不到任何文件,则文件夹中没有“新文本文档 - 复制(1)”等文件。您可以尝试@ Ansgar不太严格的过滤器 - 只需查看文件名的前17个字符 - 或者修改.Pattern - 例如“”^新文本文档 - 复制((\ d +))。doc $“如果您忘记了.doc扩展名。
查看@ Ansgar的贡献也可以帮助您澄清您的规格:“最新”是指'最后修改文件'还是'最高副本(#)'?
答案 1 :(得分:1)
枚举文件夹中的文件:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder("C:\some\where").Files
WScript.Echo f.Name
Next
像这样检查文件的名称(使用LCase()
使检查不区分大小写):
If LCase(Left(f.Name, 17)) = "new text document" Then
'do stuff
End If
请记住最近修改过的文件,如下所示:
Set mostRecent = Nothing
...
If mostRecent Is Nothing Then
Set mostRecent = f
ElseIf f.DateLastModified > mostRecent.DateLastModified Then
Set mostRecent = f
End If