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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.