1

Тема: VBS: как сделать перебор файлов в папке по времени?

Обычно скрипт перебирает файлы в папке по алфавиту. А как сделать чтоб перебирал по времени (сначала старые), по расширению?

2

Re: VBS: как сделать перебор файлов в папке по времени?

Средствами WSH — не припоминаю такого. Либо использовать посредником сторонние средства (LogParser, командный процессор), либо получать весь список, затем сортировать его. Рекомендую использовать LogParser.

3

Re: VBS: как сделать перебор файлов в папке по времени?

griha09
См. здесь.

4 (изменено: griha09, 2012-05-09 20:01:42)

Re: VBS: как сделать перебор файлов в папке по времени?

Flasher, спасибо за желание помочь, но с массивами совсем не дружу, все вот желаю подружится, да все некогда Насколько понял мысль - загнать файлы в массив и там отсортировать по времени. Но самому реализовать мне это не реально, могли бы помочь в этом вопросе?
У меня вообще такая задача: есть скрипт который читает title из htm-файлов и переименовывает их в №+title, но просмотр папки идет по алфавиту, а хотелось бы по времени.

5

Re: VBS: как сделать перебор файлов в папке по времени?

Не в массив. В отсоединённый набор записей (для простоты понимания — в таблицу базы данных, не имеющую файлового представления, только в памяти). В примере массив выступает только как исходный материал, который подвергается сортировке. У Вас же исходным материалом будет путь к файлу и дата/время:

Option Explicit

Const adDate = 7
Const adVarChar = 200


Dim strFolder

Dim objFSO
Dim objFile


strFolder = "C:\Temp"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strFolder) Then
    With WScript.CreateObject("ADODB.Recordset")
        With .Fields
            .Append "Path",             adVarChar, 2^15 - 1
            .Append "DateLastModified", adDate
        End With
        
        .Open
        .Sort = "DateLastModified DESC"
        
        For Each objFile In objFSO.GetFolder(strFolder).Files
            .AddNew Array("Path", "DateLastModified"), Array(objFile.Path, objFile.DateLastModified)
        Next
        
        .MoveFirst
        
        Do Until .EOF
            With .Fields
                WScript.Echo .Item("DateLastModified").Value, vbTab, .Item("Path").Value
            End With
            
            .MoveNext
        Loop
        
        .Close
    End With
Else
    WScript.Echo "Can't find folder [" & strFolder & "]"
End If

WScript.Quit 0

6

Re: VBS: как сделать перебор файлов в папке по времени?

2 alexii - решение КЛАСС !   - ПРОШУ В КОЛЛЕКЦИЮ !!!

Времени не хватает... :-(

7

Re: VBS: как сделать перебор файлов в папке по времени?

Круто! Спасибо, буду разбираться.

8

Re: VBS: как сделать перебор файлов в папке по времени?

Добавил в Коллекцию: VBScript: получение отсортированного списка файлов каталога.