Hvala svima, uspeo sam da odradim posao. Evo funkcija i procedura koje sam koristio:
Code:
procedure RenameDir(DirFrom, DirTo: string);
var
shellinfo: TSHFileOpStruct;
begin
with shellinfo do
begin
Wnd := 0;
wFunc := FO_RENAME;
pFrom := PChar(DirFrom);
pTo := PChar(DirTo);
{fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or
FOF_SILENT or FOF_NOCONFIRMATION;}
fFlags := FOF_ALLOWUNDO or
FOF_SILENT or FOF_NOCONFIRMATION;
end;
SHFileOperation(shellinfo);
end;
function FindFiles(Directory: string; InclAttr, ExclAttr: Integer;
const SubDirs: Boolean; const Files: TStrings): Integer;
var
SearchRec: TSearchRec;
begin
Directory := IncludeTrailingPathDelimiter(Directory);
FillChar(SearchRec, SizeOf(SearchRec), 0);
if FindFirst(Directory + '*.*', faAnyFile, SearchRec) = 0 then
begin
try
repeat
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
if ((SearchRec.Attr and InclAttr > 0) or ((SearchRec.Attr = 0) and (InclAttr <> faDirectory))) and
(SearchRec.Attr and ExclAttr = 0) then
begin
Files.Add(Directory + SearchRec.Name);
if SubDirs then
if SearchRec.Attr and faDirectory <> 0 then
FindFiles(Directory + SearchRec.Name, InclAttr, ExclAttr, SubDirs, Files);
end;
until
FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;
Result := Files.Count;
end;
procedure Trenamer_form.Button1Click(Sender: TObject); // Find procedura
var
sl: TStringList;
include: integer;
exclude: integer;
subfolders: boolean;
rootfolder: string;
begin
include := 0;
exclude := 0;
subfolders := false;
rootfolder := ShellTreeView1.path;
if checkbox1.Checked = true then
begin
Listbox1.Items.Add(rootfolder);
include := faDirectory;
end;
if checkbox2.Checked = true then include := include or faAnyFile;
if checkbox3.Checked = true then subfolders := true;
if checkbox3.Checked = false then exclude := faDirectory;
sl := TStringList.Create;
begin
try
FindFiles(rootfolder, include, exclude, subfolders, sl);
Listbox1.Items.AddStrings(sl);
finally
sl.Free;
end;
end;
end;
procedure Trenamer_form.Button4Click(Sender: TObject); //name to uppercase
var
counter: integer;
begin
counter := 0;
while counter < (Listbox2.Items.Count) do
begin
RenameFile(Listbox1.Items.Strings[counter],(AnsiUpperCaseFileName(Listbox2.Items.Strings[counter])));
RenameDir(Listbox1.Items.Strings[counter],(AnsiUpperCaseFileName(Listbox2.Items.Strings[counter])));
counter := counter +1;
end;
end;
Ovo zadnje je isto i za Lowercase, osim sto se koristi AnsiLowerCase();
Pozdrav svima, nadam se da ce ovo nekom koristiti