05. december 2003 - 16:20Der er
36 kommentarer og 1 løsning
slette filer
hey.. har et spørgsmål: hvordan sletter man alle filer i en mappe? altså... uden at bruge Kill "C:\<mappe>\*.*"... dvs... at slette filerne hver for sig.. en efter en.. så alle filerne, som ikke er i brug i øjeblikket bliver slettet...?
nej tak... jeg vil gerne lave et selv... og jeg har dr. delete, som kun sletter en ad gangen.... (mit skulle gerne slette en efter en (ik en ad gangen) og helt automatisk....) altså... sådan at man ik skal vælge filerne igen og igen... kan man det?
Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.Getfolder("c:\mappe\") For each file in folder fso.Deletefile("c:\mappe\" & file.name) Next Set folder = nothing Set fso = Nothing
Det er en gyldig regel i programmering, når man åbner for noget så lukker man det igen, når man tænder for noget, så slukker man det igen osv. Det er blot for at sætte variablen fso til ingenting igen og dermed spare hukommelse ja.
Function delMappe(sti) Set folder = fso.Getfolder("c:\mappe\") For each file in folder fso.Deletefile("c:\mappe\" & file.name) Next Set folder = nothing End Function
Set fso = CreateObject("Scripting.FileSystemObject")
Function delMappe(sti) Set folder = fso.Getfolder(sti) For each file in folder.files fso.Deletefile(sti & file.name) Next For each mappe in folder.Subfolders delMappe(sti & mappe.name) Next Set folder = nothing End Function
Set fso = CreateObject("Scripting.FileSystemObject") delMappe "c:\mappe\" Set fso = Nothing
ehmm..... nu vil jeg bare lige få udpeget en sidste ting..... hvor kommer "mappe" fra? i flg. linier: --- For each file in folder.files <--- hvor kommer den egentligt fra?? (file) fso.Deletefile(sti & file.name) <--- igen? For each mappe in folder.Subfolders <--- mappe? er det en variabel? delMappe(sti & mappe.name) <--- og der? --- og et sidste spørgsmål: --- delMappe "c:\mappe\" <--- der skal jeg vel skrive min egen mappe ind, ik? --- Undskyld at jeg er så "fatsvag", men jeg er lige vågnet... :/
Jeg må give dig ret i at koden er lidt rodet, fordi variablerne ikke bliver Dimmet (sorry, netsrac)
Jeg skriver den lige lidt om:
Private sub delMappe(sti) Dim MyFolder as Folder Dim CurrentFolder as Folder Dim MyFile as file Set MyFolder = fso.Getfolder(sti)
For each MyFile in MyFolder.files fso.Deletefile(sti & MyFile.name) Next
For each CurrentFolder in MyFolder.Subfolders delMappe(sti & Currentfolder.name) 'Bemærk - funktionen er rekursiv!!! Next Set Myfolder = nothing Ens Sub
Subben delmappe bliver så brugt således:
Dim FSO as FileSystemObject 'Husk: Tilføj reference til MicroSoft Scripting Set fso = CreateObject("Scripting.FileSystemObject") delMappe "c:\mappe\" Set fso = Nothing
Har aldrig brugt .SubFolders, så jeg ved ikek om den virker - jeg har blot nusset lidt med den kode der allerede var givet
men der er lige en ting jeg ik forstår: skal sti (ALLE steder) laves om? ogso i Private Sub delMappe(sti) ? og hvis ik, hvordan refererer jeg så til den? gennem textbox eller..?
fejlbeskeden er File not found (og hvis jeg definerer at sti = "C:\mappe\" siger den out of stack space).... nogle forslag på hvordan jeg kan få det til at slette undermapperne så? det sletter filerne i den første mappe, men ik i undermapperne...
hmmm.... hvis jeg genstarter kan jeg ik komme på nettet igen.... (problemer med et trådløst internet via USB, men det får vi rettet op på snart) mennem... siden jeg ik kan genstarte må jeg bare gå ud fra det du siger.... hvis jeg ik har sat sti til noget, så sletter den mappen... hvis jeg sætter sti til noget sletter den oz mappen... men den giver en anden fejlbesked, end den ellers gjorde... jeg kan ik se hvordan jeg skal komme ind til undermapperne... det har den ik gjort indtil videre, og jeg har aldrig arbejdet med FileSystemObject før.... såeh.... noget du kan fikse?
Prøv at tage en kop kaffe, læn dig tilbage, og kik så på koden igen. Forsøg at forstå hvordan den virker - hvordan funktionen kalder sig selv (rekursiv) indtil der ikke er flere undermapper...
sorry.... jeg kan simpelthen ik se, hvordan man skal kunne få kaldt en undermappe.... jeg ved jo ik hvordan man finder dem.... når SubFolders altså ik virker...
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.