Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2015, 19:13   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Переименовать файлы

Как в указаной папке у всех файлов у которых не указан формат изменить его на txt?
nibufep вне форума Ответить с цитированием
Старый 24.01.2015, 19:38   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Рекурсивно пройтись с пом. FinFirst, FindNext, FindClose по маске * и проверять условие
Код:
TSearchRec.Attr = faAnyFile
а затем наличие расширения(ExtractFileExt вернет пустую строку), и если расширения нет, то ставить своё.
Человек_Борща вне форума Ответить с цитированием
Старый 24.01.2015, 19:47   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Код:
TSearchRec.Attr = faAnyFile
Каталогам тоже надо давать расширение?
northener вне форума Ответить с цитированием
Старый 24.01.2015, 19:52   #4
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Как вариант можно забирать имя файла и расширение проверять, в случае необходимости менять RenameFile(oldName, newName)
kta87 вне форума Ответить с цитированием
Старый 24.01.2015, 21:57   #5
Shinobi3456
 
Регистрация: 03.09.2012
Сообщений: 7
По умолчанию

Просто как идея рекурсивно пробегать по каталогу, и если это файл то проверяем расширение через ExtractFileExt.
Код:
procedure GetAllFiles( Path: string; Lb: TListBox);
var
sRec: TSearchRec;
isFound: boolean;

begin
isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
GetAllFiles( Path + '\' + sRec.Name, Lb );
Lb.Add( Path + '\' + sRec.Name ); <---Собственно здесь можешь муть свою проверку....
end;
Application.ProcessMessages;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;
Я писал уже про эту статью про список файлов...Только я там искал файлы с расширение xml...Что мешает тебе сделать проверку через ExtractFileExt вернуло пустую строку тогда делаешь переименование вот и все))Тем более что полный путь к файлу у тебя уже есть)))

Последний раз редактировалось Stilet; 24.01.2015 в 22:50.
Shinobi3456 вне форума Ответить с цитированием
Старый 25.01.2015, 02:48   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Shinobi3456 Посмотреть сообщение
Просто как идея рекурсивно пробегать по каталогу, и если это файл то проверяем расширение через ExtractFileExt.
Код:
procedure GetAllFiles( Path: string; Lb: TListBox);
var
sRec: TSearchRec;
isFound: boolean;

begin
isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name &lt;&gt; '.' ) and ( sRec.Name &lt;&gt; '..' ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
GetAllFiles( Path + '\' + sRec.Name, Lb );
Lb.Add( Path + '\' + sRec.Name ); <---Собственно здесь можешь муть свою проверку....
end;
Application.ProcessMessages;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;
Я писал уже про эту статью про список файлов...Только я там искал файлы с расширение xml...Что мешает тебе сделать проверку через ExtractFileExt вернуло пустую строку тогда делаешь переименование вот и все))Тем более что полный путь к файлу у тебя уже есть)))
И где тут "если это файл то"?
northener вне форума Ответить с цитированием
Старый 26.01.2015, 20:03   #7
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Как вариант:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
filelist:TStringDynArray;
a,s:string;
begin
if SelectDirectory('Выберите каталог', '', a) then begin
FileList := TDirectory.GetFiles(a, '*', TSearchOption.soAllDirectories);
for s in FileList do begin
RenameFile(s, s+'.txt');
end;
end;
end;
Dmitry33RU вне форума Ответить с цитированием
Старый 26.01.2015, 22:11   #8
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Dmitry33RU Посмотреть сообщение
Как вариант:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
filelist:TStringDynArray;
a,s:string;
begin
if SelectDirectory('Выберите каталог', '', a) then begin
FileList := TDirectory.GetFiles(a, '*', TSearchOption.soAllDirectories);
for s in FileList do begin
RenameFile(s, s+'.txt');
end;
end;
end;
Работает, но нужно переименовывать только файлы без формата, как сделать эту проверку?
nibufep вне форума Ответить с цитированием
Старый 27.01.2015, 01:41   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Работает, но нужно переименовывать только файлы без формата, как сделать эту проверку?
Как сделать эту проверку написали уже два раза. Ты ответы читаешь?
northener вне форума Ответить с цитированием
Старый 27.01.2015, 17:13   #10
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Работает, но нужно переименовывать только файлы без формата, как сделать эту проверку?
Совсем лень подумать...

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
filelist:TStringDynArray;
a,s:string;
begin
if SelectDirectory('Выберите каталог', '', a) then begin
FileList := TDirectory.GetFiles(a, '*', TSearchOption.soAllDirectories);
for s in FileList do begin
if ExtractFileExt(s) = '' then begin
RenameFile(s, s+'.txt');
end;
end;
end;
end;
Dmitry33RU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DELPHI Выбрать все файлы в каталоге и если расширение .lnk - переименовать, удалив расширение ТипичныйСтудент Помощь студентам 1 14.03.2014 23:54
Не получается правильно переименовать файлы Janger Общие вопросы Delphi 7 20.02.2014 22:41
Переименовать файлы в папке FakeGen Общие вопросы Delphi 19 04.08.2011 10:34
Переименовать файлы в папке (с условием) Gvaridos Microsoft Office Excel 3 01.11.2010 11:31
Переименовать файлы по списку!? jungo Microsoft Office Excel 14 19.05.2008 11:43