PDA

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;