Если вы хотите получить файлы в папке в определенном порядке, вам придется сделать это самостоятельно. Если вам не нравится набор записей ADO или с помощью сортируемой коллекции .NET, вы можете вырезать (.Run, .Exec) и обрабатывать вывод dir /A:-D /B /O:D /T:C
(без папок, голый формат (без заголовка/сводки), порядок: дата , timefield: создание).
Update:
Хотя я, конечно, могу показать примеры, где коллекция .files поставляется его элементы упорядочены по имени, г-н Гейтс явно says:
INFO: Ограничения FileSystemObject .. Невозможно отсортировать имена файлов из коллекции файлов - вы можете перебирать объекты File в коллекции Files для получения списка файлов в папке. Однако объекты File не сортируются. Для сортировки объектов File в коллекции Files вам необходимо использовать процедуру сортировки .
Минималистичный демо-код, который показывает: Вам нужна оболочка (% COMSPEC%), если вы хотите использовать функции оболочки - как intrinsic commands:
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
Благодарим за редактирование @Ansgar. –
В качестве предложения: я бы добавил '/ b' в список аргументов, чтобы избежать ненужных деталей в выходе. –
Я тоже видел эту опцию и думал об этом, но не должен ли я выводить результаты команды 'dir' в файл, а затем обрабатывать этот файл? Я попытался использовать «Exec», но выглядел так, как будто он может выполнять только исполняемый файл и такой (например, «ping.exe»), и он не работал с 'dir' (я не смог найти файл' dir.com' на Windows 7, может быть, на Windows XP?). Я волнуюсь, что если я буду использовать создание и использование внешних файлов, я могу столкнуться с некоторыми проблемами синхронизации и заблокированными файлами, которые нельзя удалить, не выполнив мой сценарий. Как сделать опцию «dir» без создания файла («>>»)? – shwartz