![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как переименовать много файлов [D6, WinXP]
Handle © (2006-09-05 09:36:00)Есть довольно много фотографий сделанных цифровым фотоаппаратом и у всех имена что то типа
00007001, 00007002, подскажите пожалуйста как переименовать их по дате снимка.
palva (2006-09-05 12:14:00) [1]
> Zeqfreed © (05.09.06 10:33) [10]
> > [9] default © (05.09.06 10:26)
> MS, вроде, не гарантирует перечисление файлов ф-циями
> FindFirstFile/FindNextFile в лексикографическом порядке
Если FAT, то выдача идет в порядке физического расположения записей о файлах.
Плохиш (2006-09-05 10:56:00) [2]
> Virgo_Style © (05.09.06 10:12) [7]
EXIF
http://djernaes.dk/martin/jpeginfo.html
http://www.torry.net/pages.php?id=104&SID=a98f01a9d2ff194eeb70eb5f2dfe4249
Zeqfreed (2006-09-05 10:39:00) [3]> [11] default © (05.09.06 10:36)
А, понял мысль :) Тогда порядок не важен, согласен.
default (2006-09-05 10:36:00) [4]Zeqfreed © (05.09.06 10:33) [10]
а это без разницы
если есть набор имён 00007000..00008000
и встретив имя 000070003 мы поймём, что это имя 4 по счёту начиная с 1
Zeqfreed (2006-09-05 10:33:00) [5]> [9] default © (05.09.06 10:26)
Ну на практике в такой ситуации сортировка действительно может не потребоваться. Но если побыть немного буквоедом, то MS, вроде, не гарантирует перечисление файлов ф-циями FindFirstFile/FindNextFile в лексикографическом порядке и может изменить это поведение в будущем :)
default (2006-09-05 10:26:00) [6]Zeqfreed © (05.09.06 10:09) [6]
вообще, снимки позже появляющиеся на свет обычно имеет большие номера и номера идут один за другим
может у него там набор файлов типа
00007001..00007237 тогда вообще никакой сортировки не надо
Virgo_Style (2006-09-05 10:12:00) [7]по идее, надо залезть jpeg'у в то место, которое у mp3 называется Tag. Там наверняка много всего вкусного =)
Handle (2006-09-05 10:12:00) [8]Спасибо решил проблему.
Zeqfreed (2006-09-05 10:09:00) [9]> [2] default © (05.09.06 09:51)
Я бы наоборот загнал их в TList и отсортировал по числовому представлению даты. Сортировка строк будет гораздо затратней.
default (2006-09-05 10:03:00) [10]Palladin © (05.09.06 09:54) [3]
это я предполагаю
default (2006-09-05 10:01:00) [11]
procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
fn: String;
begin
SL := TStringList.Create;
fn := 'FileName';
SL.AddObject('FileDate', TObject(fn));
Caption := String(SL.Objects[0]) // выведется 'FileName'
end;
только учти как сравниваются строки!
'25.02.1983' > '12.03.2006'
то есть дату предварительно надо перевернуть
то есть вместо dd.mm.yyyy надо yyyy.mm.dd
Palladin (2006-09-05 09:54:00) [12]а кто сказал что дата создания файла будет дата снимка?
default (2006-09-05 09:51:00) [13]например, так:
использовать TStringList c Sorted = True
перебирая файлы добавляем в TStringList через AddObject пару значений - в качестве строки дату снима, а в качестве object-а имя файла
после всех добавлений список будет отсортирован по строке, то есть по дате
пробегаемся по списку сначала(то есть в порядке возрастания дат) и через массив Objects получаем имена файлов для переименования
Guest001 (2006-09-05 09:46:00) [14]sr: TSearchRec;
FindFirst('*.*', faAnyFile, sr)
FindNext(sr)
+F1+