06. juni 2007 - 15:44Der er
9 kommentarer og 1 løsning
Slette alle filer og mapper, selvom nogen af dem er i brug?
Hejsa.
Jeg ved hvordan man sletter alle filer i en mappe og jeg ved hvordan man sletter mapper.
Jeg har en mappe der hedder "Test" under denne mappe er der en del filer og mapper, nogle af filerne er i brug og nogle af mapperne er i brug.
Er der nogen herinde der ved hvordan man sletter alle filerne der ikke er i brug, og alle mapperne der ikke er i brug samt alle de filer i de mapper der er i brug, som ikke er i brug - kun ved at trykke på 1 knap?
og Selve "Test" mappen skal ikke slettes kun det der er inde under og som ikke er i brug + det skal slettes uden om papirkurven.
--EKS START --
Test\ De filer der ikke er i brug skal slettes Bla.txt bla2.txt bla3.txt - Er i brug
Test\Test 1 - er i brug,men filerne er ikke i brug og skal slettes bli.txt bli2.txt
Man kan gøre det i Total Commander, der sletter den alle filerne og fortæller så hvilke filer den ikke kunne slette fordi de er i bruge, men den sletter de andre, så det burde kunne lade sig gøre.
I en dos-prompt ville "echo y | del ." tage livet af de filer der ikke blev brugt. Med katalogerne skulle vi nok over i noget med "for".
.. nå men.
Det er da ikke et problem at bygge det ind i en rekursiv filsøgealgoritme (det findes der mange eksmpler af her på Eksperten) og så pakke deletefile og deledirectory (?) ind i en try-except.
Her får du en TStringList med de filer og mapper der ikke kunne slettes.
procedure RemoveTree(DirName: string;Rest : TStringList); var DirInfo: TSearchRec; begin DirName:=IncludeTrailingPathDelimiter(DirName); if FindFirst(DirName+'*.*', FaAnyfile, DirInfo)=0 then repeat if (DirInfo.Attr=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..') then RemoveTree(DirName+DirInfo.Name,Rest); if ((DirInfo.Attr and FaDirectory<>FaDirectory) and (DirInfo.Attr and FaVolumeId<>FaVolumeID)) then if not DeleteFile(PChar(DirName+DirInfo.Name)) then Rest.Add('Kan ikke slette fil: '+DirName+DirInfo.Name); until FindNext(DirInfo)<>0; FindClose(DirInfo); if not RemoveDirectory(PChar(DirName)) then Rest.Add('Kan ikke slette mappe: '+DirName); end;
-----------------
Kaldes således:
var Rest : TStringList; begin Rest:=TStringList.Create; RemoveTree('c:\test',Rest); ShowMessage(Rest.Text); Rest.Free; end;
Smid et svar :-) Havde helt glemt at jeg havde det er spm åben undskyld, men har ikke været på længe og har ikke haft tid til at programmere i et stykke tid. :-)
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.