Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вот vbs-скрипт, который выводит в файл список файлов, изменённых до указанного времени.
В выходном файле имена файлов отсортированы по дате. Наверное, можно сделать и bat-файл, например, на базе команды dir /O:D ? но что-то не очень очевидно как.
Код: Выделить весь код
   ' Определяем:
   
   DateNew = "05.12.2008"       ' Дату. Отображаем файлы, изменённые ранее указанной.
   inDir = "E:\Delete\yyyyy"    ' Директорию c файлами имена которых выводятся в файл
   WhereOutTxt = "E:\Delete\Файлы_до_" + Mid(DateNew, 7, 4) + Mid(DateNew, 4, 2) + Mid(DateNew, 1, 2) + ".txt"  ' Имя выходного файла
   
   Set FSO = CreateObject("Scripting.FileSystemObject")     ' Создаём объект для доступа к файловой системе
   
   DN = DateSerial(CInt(Mid(DateNew, 7, 4)), CInt(Mid(DateNew, 4, 2)), CInt(Mid(DateNew, 1, 2)))
   
   Set F1 = FSO.OpenTextFile(WhereOutTxt, 2, True)
   
   On Error Resume Next                                     ' Обработаем ситуацию, если встретилась директория без доступа
   Set F = FSO.GetFolder(inDir)                             ' Создаём объект для доступа к директории
   If Err.Number = 0 Then
       On Error GoTo 0

       Set AllFiles = F.Files                   ' Для текущей директории создаём коллекцию файлов
       N = AllFiles.Count
       ReDim MNames(N - 1), MDates(N - 1), M(N - 1)
       
       i = -1
       For Each iFile In AllFiles               ' Просматриваем файлы в директории
            
            i = i + 1
            M(i) = i
            MNames(i) = iFile.Name
'            MDates(i) = iFile.DateCreated       ' Дата создания файла
'            MDates(i) = iFile.DateLastAccessed  ' Дата последнего доступа к файла
            MDates(i) = iFile.DateLastModified  ' Дата последней модификации файла
            
       Next
       
       For i = 0 To N - 1
            
            For j = i To N - 1
                If MDates(M(i)) > MDates(M(j)) Then
                    k = M(i)
                    M(i) = M(j)
                    M(j) = k
                End If
            Next
            If DN > MDates(M(i)) Then
                F1.WriteLine (Mid(CStr(MDates(M(i))) + "   ", 1, 21) + MNames(M(i)))
            Else
                Exit For
            End If
       Next
             
   Else
       MsgBox inDir + vbCrLf + Err.Description, 0, "Проблемы с директорией"
   End If
   
   F1.Close

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 00:35, 11-05-2010 | #3