Avatar billede jih Nybegynder
05. december 2003 - 16:20 Der 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...?

//WebPsycho
Avatar billede arlet Juniormester
05. december 2003 - 16:21 #1
Avatar billede jih Nybegynder
05. december 2003 - 16:23 #2
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?
Avatar billede arlet Juniormester
05. december 2003 - 16:25 #3
ok, så misforstod jeg dig*S*
Avatar billede jih Nybegynder
05. december 2003 - 16:26 #4
helt i orden ;)
Avatar billede netsrac Praktikant
05. december 2003 - 16:29 #5
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
Avatar billede jih Nybegynder
05. december 2003 - 16:53 #6
hmmm... vil gerne lige have en forklaring på et..... hvor skal "Set folder = nothing" stå efter loopet? for at spare memory, eller..?
Avatar billede netsrac Praktikant
05. december 2003 - 17:20 #7
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.
Avatar billede martin_moth Mester
05. december 2003 - 20:34 #8
Det er fordi folder og fso er objekter og ikke variabler

Det giver ingen mening at skrive fx.

Dim strString as String
strString = "Hej"
Set strString = Nothing
Avatar billede jih Nybegynder
07. december 2003 - 22:51 #9
nemmerlig... den var nemmere at forstå.... men kan du oz få den til at slette undermapperne med?
Avatar billede netsrac Praktikant
08. december 2003 - 12:27 #10
Ja så skal du lave den rekursiv:



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")

Set fso = Nothing
Avatar billede netsrac Praktikant
08. december 2003 - 12:28 #11
Glem det indlæg, min browser fuckede lige, den rigtige kommer om lidt.
Avatar billede netsrac Praktikant
08. december 2003 - 12:29 #12
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
Avatar billede jih Nybegynder
08. december 2003 - 15:32 #13
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... :/

//WebPsycho
Avatar billede martin_moth Mester
08. december 2003 - 15:51 #14
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
Avatar billede martin_moth Mester
08. december 2003 - 15:52 #15
Tilføj lige Set Currentfolder = nothing i nederste linie i Subben :o)
Avatar billede jih Nybegynder
08. december 2003 - 19:26 #16
den giver fejl i flg. linie:

fso.Deletefile(sti & MyFile.name) ("object required")

såeh.... :/
Avatar billede martin_moth Mester
08. december 2003 - 20:17 #17
Har du oprettet reference til MicroSoft Scripting Runtime
Avatar billede jih Nybegynder
08. december 2003 - 22:35 #18
ja, men så viser den fejl i flg:

  Set MyFolder = FSO.Getfolder(sti)
Avatar billede martin_moth Mester
09. december 2003 - 09:04 #19
Indeholder sti det rigtige?
Avatar billede jih Nybegynder
09. december 2003 - 14:51 #20
ja... det har jeg oz prøvet med.... prøver lige igen
Avatar billede jih Nybegynder
09. december 2003 - 15:01 #21
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..?
Avatar billede jih Nybegynder
09. december 2003 - 15:06 #22
vil egentlig gerne vide hvad det her betyder:

'Bemærk - funktionen er rekursiv!!! (er ik dansker og forstår ik hvad rekursiv er)
Avatar billede jih Nybegynder
09. december 2003 - 15:08 #23
har fundet fejlen... du glemte at skrive "Set fso = CreateObject("Scripting.FileSystemObject")" ind....
Avatar billede martin_moth Mester
09. december 2003 - 15:09 #24
?

Ved du hvordan en function fungerer?

Du skal ikek give sti en værdi nogen som helst steder. Du skriver bare
  delMappe "c:\mappe\"
Avatar billede jih Nybegynder
09. december 2003 - 15:09 #25
damn jeg spammer.... men der er fejl i denne linie nu:

    FSO.DeleteFile (sti & MyFile.Name)
Avatar billede jih Nybegynder
09. december 2003 - 15:10 #26
nååå.... jaja... det ved jeg... tåger lidt... sry...
Avatar billede jih Nybegynder
09. december 2003 - 15:11 #27
og endnu en gang..... den sletter ik mine subfolders.... :(
Avatar billede jih Nybegynder
09. december 2003 - 15:11 #28
out of stack space.... (spammer ik mere)
Avatar billede martin_moth Mester
09. december 2003 - 15:13 #29
?
Avatar billede jih Nybegynder
09. december 2003 - 15:15 #30
ok.... i flg linie er der fejl:

    FSO.DeleteFile (sti & MyFile.Name)

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...
Avatar billede martin_moth Mester
09. december 2003 - 15:18 #31
Ja - debug lidt, se om den overhovedet når ned i nogen undermapper.

Out of Stack space - har du problemer med hukemmelse? Prøv en genstart...
Avatar billede jih Nybegynder
09. december 2003 - 15:22 #32
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?
Avatar billede martin_moth Mester
09. december 2003 - 15:27 #33
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...
Avatar billede jih Nybegynder
09. december 2003 - 15:30 #34
ok... vi prøver.....
Avatar billede jih Nybegynder
09. december 2003 - 16:41 #35
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...
Avatar billede jih Nybegynder
09. december 2003 - 17:35 #36
lægger lige nogle ekstra points, hvis der er nogen der kan klare det.... lægger 30 ekstra...
Avatar billede jih Nybegynder
08. januar 2004 - 19:09 #37
lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester