یه پوشه دارم که توش 5000 تا عکس داره از نوع .jpg
بعضی از عکس ها اول اسمشون چند تا 0 دارن. مثلا 0001 یا 0015 یا 0765
اگه بخوام همه فایل های این پوشه رو طوری Rename کنم که 0 ها از اول اسم فایل ها پاک بشن، چی کار باید بکنم؟
Printable View
یه پوشه دارم که توش 5000 تا عکس داره از نوع .jpg
بعضی از عکس ها اول اسمشون چند تا 0 دارن. مثلا 0001 یا 0015 یا 0765
اگه بخوام همه فایل های این پوشه رو طوری Rename کنم که 0 ها از اول اسم فایل ها پاک بشن، چی کار باید بکنم؟
با استفاده از FindFirst و FindNext لیست فایل های پوشه را بدست بیارید، و با استفاده از RenameFile نام هر فایل را تغییر بدید.
یه همچین کدی نوشتم کار می کنه. حالا اگه بخوام بگم اول هر کدوم که صفر هست و هر چند تا هست حذف کن چی کار کنم؟
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 رو الان باید اصلاح کنم. درسته؟
سلام
1- اگر مطمئن هستی که اسم فایلها فقط از عدد تشکیل شده ، اسم فایل رو جدا کن به عدد (integer) تبدیل کن و دوباره به string تبدیل کن و فایلت رو تغییر نام بده اینجوری صفرهای اولش حذف میشه
2- باید با استفاده از دستور copy تعداد صفر ها رو بشمری و حذفشون کنی
3- بدون توجه به نام فایل با یه کانتر شروع به نام گذاری کن
موفق باشی
اسم فایل را که به دست آوردید، می تونید کدی مثل این بنویسید:نقل قول:
یه همچین کدی نوشتم کار می کنه. حالا اگه بخوام بگم اول هر کدوم که صفر هست و هر چند تا هست حذف کن چی کار کنم؟
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;
خیلی ممنون از راهنمایی هاتون
هر چند فرمایش شما جامع تر هست ولی با این کد مشکلم حل شد
کد شما رو هم امتحان می کنم
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;