View Full Version : Rename کردن دسته جمعی فایل ها
  
Tarrah
پنج شنبه 05 آذر 1388, 10:58 صبح
یه پوشه دارم که توش 5000 تا عکس داره از نوع .jpg 
بعضی از عکس ها اول اسمشون چند تا 0 دارن. مثلا 0001 یا 0015 یا 0765
اگه بخوام همه فایل های این پوشه رو طوری Rename کنم که 0 ها از اول اسم فایل ها پاک بشن، چی کار باید بکنم؟
vcldeveloper
پنج شنبه 05 آذر 1388, 11:21 صبح
با استفاده از FindFirst و FindNext لیست فایل های پوشه را بدست بیارید، و با استفاده از RenameFile نام هر فایل را تغییر بدید.
Tarrah
پنج شنبه 05 آذر 1388, 11: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, 20:12 عصر
سلام
1- اگر مطمئن هستی که اسم فایلها فقط از عدد تشکیل شده  ، اسم فایل رو جدا کن به عدد (integer) تبدیل کن و دوباره به string تبدیل کن و فایلت رو تغییر نام بده اینجوری صفرهای اولش حذف میشه 
2- باید با استفاده از دستور copy تعداد صفر ها رو بشمری و حذفشون کنی
3- بدون توجه به نام فایل با یه کانتر شروع به نام گذاری کن
موفق باشی
vcldeveloper
پنج شنبه 05 آذر 1388, 21: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, 15: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-1404, Jelsoft Enterprises Ltd.