Найти самый старый и самый новый файл в директории.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Найти самый старый и самый новый файл в директории.

Сообщение kibernetics » 12.10.2006 (Чт) 9:53

Подскажите, как грамотно организовать поиск самого раннего файла по дате, и самого позднего. Суть такая, есть диск, на нём обновления с такого-то периода по такой-то. Папок много(в папках есть также папки), около 15-20. Нужно: найти в папках самый ранний файл, и самый поздний.

August
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 25.08.2006 (Пт) 10:48
Откуда: C сибири

Re: Найти самый старый и самый новый файл в директории.

Сообщение August » 12.10.2006 (Чт) 10:07

kibernetics писал(а):Подскажите, как грамотно организовать поиск самого раннего файла по дате, и самого позднего. Суть такая, есть диск, на нём обновления с такого-то периода по такой-то. Папок много(в папках есть также папки), около 15-20. Нужно: найти в папках самый ранний файл, и самый поздний.



А в поиск что не смотрел, первое что выдало

http://bbs.vbstreets.ru/viewtopic.php?p=6578640&sid=7460aaa574bbc417dea11c8cb8e130f8

вот и проверяй по все иерархии файлы и сравнивай...

GetFileTime(hFile, CreationTime, LastAccessTime, LastWriteTime)
Последний раз редактировалось August 12.10.2006 (Чт) 10:25, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2006 (Чт) 10:14

От твоего имени что-нибудь написать что-ли, чтобы ты в следующий раз SID не оставлял?
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 10:26

alibek
а что такое SID ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Найти самый старый и самый новый файл в директории.

Сообщение alibek » 12.10.2006 (Чт) 10:29

August писал(а):&sid=7460aaa574bbc417dea11c8cb8e130f8
Lasciate ogni speranza, voi ch'entrate.

August
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 25.08.2006 (Пт) 10:48
Откуда: C сибири

Re: Найти самый старый и самый новый файл в директории.

Сообщение August » 12.10.2006 (Чт) 10:46

alibek писал(а):
August писал(а):&sid=7460aaa574bbc417dea11c8cb8e130f8


Ну бывает, не бейте больно :oops:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 11:12

а как сделать, чтоб имена всех файлов(с путями) со всех директорий копировались в отдельный файл из которого и будет выполнятся сравнение по дате?
Т.е. как я понял нужно:
1. Собрать все пути к файлам в одном файле
2. Берем первый из списка, запоминаем его дату создания
3. Берем следующий и сравниваем его дату с предыдущим, если она сделана раньше, то оставляем её для последущего сравения.

Или есть что-то более оптимизированнее?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2006 (Чт) 11:19

dir /o:d /a:-d /b

Берешь первую и последнюю строчку.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 11:44

alibek писал(а):dir /o:d /a:-d /b

Берешь первую и последнюю строчку.


ничего не понятно. :oops:
можно ли подробнее?

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 11:46

как получить список каталогов и список файлов в каталоге?

August
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 25.08.2006 (Пт) 10:48
Откуда: C сибири

Сообщение August » 12.10.2006 (Чт) 12:00

Dim D As System.IO.Directory
Dim Dirs as String()=D.GetDirectories("C:\Windows")

вот тебе "рыба" по файлам, разбирайся...

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 12:07

August писал(а):Dim D As System.IO.Directory
Dim Dirs as String()=D.GetDirectories("C:\Windows")

вот тебе "рыба" по файлам, разбирайся...


а это для какого бейсика? .NET чтоли?
мне нужно для VB6.0

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.10.2006 (Чт) 13:17

не мог бы ктонить написать примерчик поиска самого старого файла и самого нового по дате создания, со всех папок в директории?
:pale:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 16.10.2006 (Пн) 10:39

а не так-то просто :?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 16.10.2006 (Пн) 12:26

Хосспади... Если ничего не делать, то и правый ботинок отличить от левого не так-то просто.
Код: Выделить всё
Sub FindOldNewFile(StartDir As Folder, OldFile As String, NewFile As String, Optional OldDate As Date, Optional NewDate As Date)
Dim dr As Scripting.Folder
Dim fl As Scripting.File
    For Each fl In StartDir.Files
        If fl.DateCreated < OldDate Or OldDate = 0 Then
            OldDate = fl.DateCreated
            OldFile = fl.Path & "\" & fl.Name
        End If
        If fl.DateCreated > NewDate Or NewDate = 0 Then
            NewDate = fl.DateCreated
            NewFile = fl.Path & "\" & fl.Name
        End If
    Next fl
    For Each dr In StartDir.SubFolders
        FindOldNewFile dr, OldFile, NewFile, OldDate, NewDate
    Next dr
End Sub

Private Sub Form_Load()
Dim fso As New Scripting.FileSystemObject
Dim nf As String, of As String
Dim od As Date, nd As Date
    FindOldNewFile fso.GetFolder("C:\GAMES"), of, nf, od, nd
    Debug.Print nf, nd
    Debug.Print of, od
End Sub
Лучший способ понять что-то самому — объяснить это другому.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 16.10.2006 (Пн) 13:12

работает! :D
только медленно :(
размер папок около 4 гигов. файлов в папке около 8.000

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.10.2006 (Пн) 15:31

вот заготовочка, надо доработать напильником :lol:
Вложения
ListFolder.rar
(9.67 Кб) Скачиваний: 123

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 18.10.2006 (Ср) 10:44

Antonariy
благодарствую. очень помог мне этот пример разобраться с FSO

Konst_One
скачал. сегодня поковыряю. попробую разобраться. :?
спасибо


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот], Yandex-бот и гости: 36

    TopList  
cron