Avatar billede wanda13 Nybegynder
21. juli 2004 - 12:09 Der er 15 kommentarer og
3 løsninger

Et lille oprydnings script?

Hvordan kan man i en .vbs script fil, få den til at lokaliser alle mapper der hedder temp og så slette alle filer herunder?
Avatar billede wanda13 Nybegynder
21. juli 2004 - 12:52 #1
Denne del kører, men laver mindre fejl, og her skal man selv angive alle mapper det drejer sig om, hvor det ville være nemme hvis dne selv fandt alle mapper der hedder temp, og sletter alt deri?

Dim FSO, Files, Folders
set FSO=CreateObject("Scripting.FileSystemObject")
Folders="c:\windows\temp\*.*"
Files="c:\windows\temp\*.*"
wscript.echo "Delete some files"
FSO.DeleteFolder(Folders)
FSO.DeleteFile(Files)
wscript.echo Files,"now deleted"
Avatar billede wanda13 Nybegynder
21. juli 2004 - 13:10 #2
Mindre fejl = Hvis der er filer i windows/temp mappen som er i brug, så fejler den hele scriptet istedet for bare at droppe den og fortsætte med resten?
Avatar billede martin_moth Mester
21. juli 2004 - 13:11 #3
On error resume next..?
Avatar billede martin_moth Mester
21. juli 2004 - 13:17 #4
Altså

Dim FSO, Files, Folders
set FSO=CreateObject("Scripting.FileSystemObject")
Folders="c:\mstn\*.*"
Files="c:\mstn\*.*"
wscript.echo "Delete some files"
on error resume next    '<-- NY LINIE
FSO.DeleteFolder(Folders)
FSO.DeleteFile(Files)
wscript.echo Files,"now deleted"

Du kunne også gøre det smartere, og tjekke på fejlkoden osv hvis du vil det
Avatar billede wanda13 Nybegynder
21. juli 2004 - 14:31 #5
Ok, det var den mindre fejl, som virker med denne linie, har du også en ide om hvordan jeg kan finde alle temp mapperne og slette indholdet deri?
Den aktuelle brugers mappe er jo her : fso.getspecialfolder(2)
men den kan jeg ikke bruge til meget, da det jo gerne skulle ske for alle temp mapper på maskinen?
Avatar billede wanda13 Nybegynder
21. juli 2004 - 14:36 #6
Kunne forstille mig noget alle :

Find alle navne under under 'dokuments and settings' Som på en måde er taget fra stien her : fso.getspecialfolder(2) og så bare skifter brugernavnet ud.

For i = 1 to AntalUsers do
  slet /tem/*.* (og også mapper)
loop
Avatar billede martin_moth Mester
22. juli 2004 - 07:30 #7
Kan ikke huske - hvad gør fso.getspecialfolder(2) ?

Du kan jo loope over alle foldere i 'dokuments and settings', tjekke om navnet er "temp", og hvis det er, kande din sletterutine, som du allerede har skrevet
Avatar billede wanda13 Nybegynder
22. juli 2004 - 07:55 #8
Hvordan looper jeg gennem alle disse navne?
Avatar billede wanda13 Nybegynder
22. juli 2004 - 07:57 #9
fso.getspecialfolder(2) = Stien til temp mappen for den bruger der er logget ind. (eg. c:\documents and settings\navn\lokale indstillinger\temp\)
Avatar billede martin_moth Mester
22. juli 2004 - 09:03 #10
Hvordan man looper:

For ... to ... next
Avatar billede martin_moth Mester
22. juli 2004 - 09:15 #11
Jeg ville gå ind i "c:\documents and settings\", og loope over alle undermapper, teste på navnet, og er navnet "temp" slettes filerne.

Måske kan man med fso direkte få listet alle brugeres temp-mapper, så er det naturligvis lettere. Jeg har ikek VB på denen masine, men du kan jo selv se hvilke metoder du kan bruge, der er muligvis en fso.find, fso.filesearch eller lignende.

Eksempel på "manuelt" loop:



Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject

FindDir "temp", fso.GetFolder("c:\windows\documents and settings")

Private Sub FindDir(name As String, folder As Scripting.folder)
  Dim tmpFolder As Scripting.folder
  If folder.SubFolders.Count > 0 Then
    For Each tmpFolder In folder.SubFolders
      FindDir name, tempfolder  '< REKURSIVT KALD
    Next
  End If

  if lcase(tempfolder.name) = lcase(name) then
    'KALD DIN SLETTERUTINE
  end if
End Sub


Kan ikke huske om det hedder
  tempfolder.name
eller
  tempfolder.foldername
eller
..?

Det kan du selv se
Avatar billede wanda13 Nybegynder
22. juli 2004 - 11:20 #12
Den fejler ved : Dim fso As Scripting.FileSystemObject
Den kan generelt ikke lide alt der har med : Scripting.FileSystemObject
at gøre?
Avatar billede martin_moth Mester
22. juli 2004 - 11:24 #13
Nå ja, glemte at det er vbscript vi taler om. Så drop det...
Avatar billede martin_moth Mester
22. juli 2004 - 11:24 #14
Altså drop "Dim fso As ....."
Avatar billede martin_moth Mester
22. juli 2004 - 11:25 #15
Dit spørgsmål hører måske mere til under http://www.eksperten.dk/spm/Programmering/Script/VBscript/ :o)
Avatar billede wanda13 Nybegynder
22. juli 2004 - 11:36 #16
ok, flytter lige den sidste del af spørgsmålet dertil :-)
Avatar billede wanda13 Nybegynder
22. juli 2004 - 11:36 #17
Avatar billede martin_moth Mester
22. juli 2004 - 14:22 #18
Det er stadig under Visual Basic, ikke under VB script. Og du skal nok lukke det ene, så du ikek ahr to ens spørgsmål.

Må indrømme at mit svar er skrevet med udgangspunkti Visual Baisc. Tag det du kan bruge og ret til. Eller eksperimenter med fso og de metoder der er til det - det står altsammen på msdn.

Good luck
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