View Full Version : Rename کردن دسته جمعی فایل ها
Tarrah
پنج شنبه 05 آذر 1388, 09:58 صبح
یه پوشه دارم که توش 5000 تا عکس داره از نوع .jpg
بعضی از عکس ها اول اسمشون چند تا 0 دارن. مثلا 0001 یا 0015 یا 0765
اگه بخوام همه فایل های این پوشه رو طوری Rename کنم که 0 ها از اول اسم فایل ها پاک بشن، چی کار باید بکنم؟
vcldeveloper
پنج شنبه 05 آذر 1388, 10:21 صبح
با استفاده از FindFirst و FindNext لیست فایل های پوشه را بدست بیارید، و با استفاده از RenameFile نام هر فایل را تغییر بدید.
Tarrah
پنج شنبه 05 آذر 1388, 10:24 صبح
یه همچین کدی نوشتم کار می کنه. حالا اگه بخوام بگم اول هر کدوم که صفر هست و هر چند تا هست حذف کن چی کار کنم؟
procedure TForm1.Button2Click(Sender: TObject);
var
sr: TSearchRec;
FileAttrs: Integer;
begin
if FindFirst('*.jpg', faAnyFile, sr) = 0 then
begin
repeat
Renamefile('001.jpg','1.jpg');
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
یعنی فقط RenameFile رو الان باید اصلاح کنم. درسته؟
mossaferin
پنج شنبه 05 آذر 1388, 19:12 عصر
سلام
1- اگر مطمئن هستی که اسم فایلها فقط از عدد تشکیل شده ، اسم فایل رو جدا کن به عدد (integer) تبدیل کن و دوباره به string تبدیل کن و فایلت رو تغییر نام بده اینجوری صفرهای اولش حذف میشه
2- باید با استفاده از دستور copy تعداد صفر ها رو بشمری و حذفشون کنی
3- بدون توجه به نام فایل با یه کانتر شروع به نام گذاری کن
موفق باشی
vcldeveloper
پنج شنبه 05 آذر 1388, 20:45 عصر
یه همچین کدی نوشتم کار می کنه. حالا اگه بخوام بگم اول هر کدوم که صفر هست و هر چند تا هست حذف کن چی کار کنم؟
اسم فایل را که به دست آوردید، می تونید کدی مثل این بنویسید:
var
sr: TSearchRec;
i : Integer;
NewFileName,
Path : TFileName;
begin
Path := 'C:\';
if FindFirst(Path + '*.jpg', faAnyFile, sr) = 0 then
try
repeat
for i := 1 to Length(sr.Name) do
if sr.Name[i] <> '0' then
Break;
NewFileName := Path + Copy(sr.Name,i,Length(sr.Name)-i);
RenameFile(Path + sr.Name, NewFileName);
until FindNext(sr) <> 0;
finally
FindClose(sr);
end;
end;
Tarrah
یک شنبه 08 آذر 1388, 14:18 عصر
خیلی ممنون از راهنمایی هاتون
هر چند فرمایش شما جامع تر هست ولی با این کد مشکلم حل شد
کد شما رو هم امتحان می کنم
procedure TForm1.Button2Click(Sender: TObject);
var
sr: TSearchRec;
i,first,last: Integer;
begin
first:=strtoint(edit2.Text);
last:=strtoint(edit3.Text);
if FindFirst('*.jpg', faAnyFile, sr) = 0 then
begin
for i:=first to last do
Renamefile(edit1.Text+inttostr(i)+'.jpg',inttostr( i)+'.jpg');
FindClose(sr);
end;
end;
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.