Ada temen di kantor yang ingin merubah nama file. Merubah nama file disini bukan berarti menggantinya dengan nama file yang benar-benar berbeda. Dia ingin mengganti semua spasi pada satu nama file menjadi tanda strip (“-“), atau karakter apa saja yang dia inginkan.

Bukan masalah yang besar jika file yang ingin dia ubah namanya hanya ada beberapa saja. Masalahnya dia punya 3000 lebih file!! Pasti dibutuhkan waktu ber-jam2 atau bahkan beberapa hari untuk mengerjakannya secara manual.

Akhirnya saya menawarkan diri untuk membantunya. Saya bikin sebuah aplikasi kecil untuk melakukan perubahan nama file yang jumlahnya bejibun itu secara otomatis.

Ini coding-nya:


procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string);
var
SR: TSearchRec; IsFound: Boolean; j: integer; Fl: File;
OneChar,JoinChar,myFile,OldFileName,NewFileName : string;

begin
if StartDir[length(StartDir)] '\' then StartDir := StartDir + '\';
IsFound := FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;

while IsFound do begin
myFile := SR.Name; OneChar := ''; JoinChar := '';
for j := 1 to length(myFile) do
begin
OneChar := copy(myFile, j, 1);
if trim(OneChar) = trim(Form1.eChar1.Text) then OneChar := Form1.eChar2.Text;
JoinChar := JoinChar + OneChar;
end;

OldFileName := StartDir + myFile;
AssignFile(Fl, OldFileName);
NewFileName := StartDir + JoinChar;
Rename(Fl, NewFileName);

FilesList.Add(StartDir + SR.Name + ' renamed into ' + StartDir + NewFileName);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
FilesList: TStringList;
begin
FilesList := TStringList.Create;

try
FindFiles(FilesList, eStartDir.Text, eFileMask.Text);
ListBox1.Items.Assign(FilesList);
LabelCount.Caption := IntToStr(FilesList.Count) + ' file(s) renamed ';
finally
FilesList.Free;
end;
end;