Du kan gå ud i en prompt og gøre det der. Stil dig i kataloget hvor dine filer ligger og skriv ren *.jpg sommer*.jpg
Den anden løsning er vha. FindFirst, FindNext, FindClose at pløje kataloget igennem.
procedure PrefixFileName(aPrefix : string); var sr : TSearchRec; Found : boolean; begin Found := FindFirst('*.jpg',fsAnyFile,sr) = 0; try while Found do begin // Kan ikke huske om delphis omdøbningsprocedure hedder det, jeg gætter. RenameFile(sr.name, aPrefix + sr.name); Found := FindNext(sr) = 0; end; finally FindClose(sr); end; end;
Dette her er testet (og jeg ramte vist meget godt med mit oprindelige gæt):
...
implementation
uses FileCtrl;
procedure TfrmMain.btnDoItClick(Sender: TObject); var sr : TSearchRec; Found : boolean; OldDir : string; begin GetDir(0,OldDir); ChDir(ExcludeTrailingPathDelimiter(eDirectory.Text)); try Found := FindFirst('*.jpg',faAnyFile,sr) = 0; try while Found do begin RenameFile(sr.Name,ePrefix.Text + sr.Name); Found := FindNext(sr) = 0; end; finally FindClose(sr); end; finally ChDir(OldDir); end; end;
procedure TfrmMain.btnLookupClick(Sender: TObject); var st : string; begin st := trim(eDirectory.Text); if SelectDirectory('Vælg katalog','\',st,[]) then eDirectory.Text := trim(st); end;
Du må gerne få mit testprogram hvis du har lyst. Skriv til hrc_public snabela hotmail... På min form har jeg to TEdit'er, eDirectory og ePrefix for hhv. kataloget hvor jpg'erne ligger og for hvad der skal stå foran filnavnet. Dernæst en knap, kaldet btnDOIt.
Så har jeg rettet lidt, så navnene passer med mine indsatte elementer.
Denne linje gav fejlen "For mange aktuelle parametre": if SelectDirectory('Vælg mappe','\',st,[]) then Path.Caption:=trim(st);
Så jeg fjernede ",[]" og så kørte programmet uden fejl. Det omdøber dog ikke. Min kode er nu: --------------------------------------------------------- unit Unit1;
procedure TForm1.ChooseFolderClick(Sender: TObject); var st: string; begin st:=trim(Path.Caption); if SelectDirectory('Vælg mappe','\',st,[]) then Path.Caption:=trim(st); end;
procedure TForm1.SubmitClick(Sender: TObject); var sr: TSearchRec; Found: boolean; OldDir: string; begin GetDir(0,OldDir); ChDir(ExcludeTrailingPathDelimiter(Path.Caption)); try Found:=FindFirst('*.txt',faAnyFile,sr)=0; try while Found do begin RenameFile(sr.Name,Separator.Text+sr.Name); Found:=FindNext(sr)=0; end; finally FindClose(sr); end; finally ChDir(OldDir); end; end;
end. ----------------------------------------------------- Ja, jeg har ændret .jpg til .txt, da det lige er det jeg tester på. Jeg laver bagefter, så man kan vælge fileextension manuelt.
Du kan gøre det to steder. Det rigtige sted er at rette faAnyFile til faArchive som kun tager "almindelige" filer. Det andet sted er at tjekke på sr.attr og se om det er et katalog eller en fil.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.