如果您想按特定顺序获取文件夹中的文件,则必须自己完成。如果您不喜欢 ADO 记录集或使用可排序的 .NET 集合,您可以使用(.Run、.Exec)并处理dir /A:-D /B /O:D /T:C
(无文件夹、裸格式(无标题/摘要)、订单:日期、时间域:创作)。
更新:
虽然我当然可以展示 .Files 集合交付其按名称排序的元素的示例,但盖茨先生明确表示:
信息:FileSystemObject 的限制... 无法对文件集合中的文件名进行排序 - 您可以遍历 Files 集合中的 File 对象以获取文件夹中文件的列表。但是,文件对象未排序。您需要使用排序例程对 Files 集合中的 File 对象进行排序。
简约的演示代码显示:如果你想使用 shell 功能,你需要一个 shell (%comspec%) - 比如内在命令:
Option Explicit
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim goWS : Set goWS = CreateObject("WScript.Shell")
Dim csDir : csDir = "c:\temp"
WScript.Quit demoSF()
Function demoSF()
demoSF = 0
Dim aDSOrd : aDSOrd = getDSOrd(csDir, "%comspec% /c dir /A:-D /B /O:D /T:C """ & csDir & """")
Dim oFile
For Each oFile In aDSOrd
WScript.Echo oFile.DateCreated, oFile.Name
Next
End Function ' demoSF
Function getDSOrd(sDir, sCmd)
Dim dicTmp : Set dicTmp = CreateObject("Scripting.Dictionary")
Dim oExec : Set oExec = goWS.Exec(sCmd)
Do Until oExec.Stdout.AtEndOfStream
dicTmp(goFS.GetFile(goFS.BuildPath(sDir, oExec.Stdout.ReadLine()))) = Empty
Loop
If Not oExec.Stderr.AtEndOfStream Then
WScript.Echo "Error:", oExec.Stderr.ReadAll()
End If
getDSOrd = dicTmp.Keys()
End Function
输出:
cscript 16895525.vbs
07.10.1998 15:31:34 TlbInf32.chm
..
09.10.2008 22:40:29 sqlce.sql
09.10.2008 22:40:29 gltsqlcopytest.sdf
05.11.2008 20:11:39 Vorfuehrung.class
..
28.03.2011 20:23:36 Program.cs
.
01.10.2012 10:10:10 KyXHDe.chm