Avatar billede daki Juniormester
01. oktober 2007 - 13:28 Der er 17 kommentarer og
1 løsning

Slette filer via vbs

Jeg har "lånet" scriptet fra dette spm. http://www.eksperten.dk/spm/524252

'--------------------
option explicit

dim strPath, objFSO, objFolder
dim objSletMappe, objSletFil

dim objOverMappe, overmappe

strPath = "C:\Cognosdata\Temp" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

' slet mapper i "e"-mapperne:
for each overmappe in objFolder.subfolders
set objOverMappe = objFSO.GetFolder(overmappe.Name) -- linie 15 --

    For Each objSletMappe In objOverMappe.SubFolders
      objFSO.DeleteFolder strPath & "\" & overmappe.Name & "\" & objSletMappe.Name,True
    Next
next

' slet filer i "e"-mapperne:
for each overmappe in objFolder.subfolders
set objOverMappe = objFSO.GetFolder(overmappe.Name)

    For Each objSletFil In objOverMappe.files
        objFSO.DeleteFile strPath & "\" & objOverMappe.Name & "\" & objSletFil.Name,True
    Next
next

set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes
'--------------------

Jeg får en scriptfejl i linie 15 (path not found)

Er der nogen, som kan se fejlen

/dan
Avatar billede sherlock Nybegynder
01. oktober 2007 - 13:32 #1
Der findes ikke et directory der hedder "C:\Cognosdata\Temp" ?!
Avatar billede daki Juniormester
01. oktober 2007 - 13:38 #2
Det gør der, det er netop den som skal tømmes ;-)

/dan
Avatar billede sherlock Nybegynder
01. oktober 2007 - 16:11 #3
Prøv at printe  overmappe.Name  lige inden linie 15
Avatar billede daki Juniormester
02. oktober 2007 - 08:32 #4
Hvad mener du?
Dette her er ikke lige min stærke side :-)
Avatar billede sherlock Nybegynder
02. oktober 2007 - 09:15 #5
sæt en "print overmappe.Name" før linie 15
Avatar billede daki Juniormester
02. oktober 2007 - 10:24 #6
Hvad skal jeg nøjagtigt gøre?
Hvis jeg skriver: print overmappe.Name = Variable is undefined: 'print'
Hvis jeg skriver: "print overmappe.Name" = Expected statement

/dan
Avatar billede sherlock Nybegynder
02. oktober 2007 - 10:43 #7
Ahh. man skal lære noget nyt hver dag :)


Wscript.Echo overmappe.Name
Avatar billede daki Juniormester
02. oktober 2007 - 11:10 #8
Ja, det skal man :)

Output = navnet på 1. mappe i C:\Cognosdata\Temp
(som skal slettes)

/dan
Avatar billede sherlock Nybegynder
02. oktober 2007 - 11:48 #9
Den skulle køres fra C:\Cognosdata\Temp

Prøv denne...

'--------------------
option explicit

dim strPath, objFSO, objFolder
dim objSletMappe, objSletFil

dim objOverMappe, overmappe

strPath = "C:\Cognosdata\Temp" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

' slet mapper i "e"-mapperne:
for each overmappe in objFolder.subfolders
    wscript.echo " > " & strPath & "\" & overmappe.Name
    set objOverMappe = objFSO.GetFolder(strPath & "\" & overmappe.Name)

    For Each objSletMappe In objOverMappe.SubFolders
    wscript.echo " >> " & strPath & "\" & overmappe.Name & "\" & objSletMappe.Name
      objFSO.DeleteFolder strPath & "\" & overmappe.Name & "\" & objSletMappe.Name,True
    Next
next

' slet filer i "e"-mapperne:
for each overmappe in objFolder.subfolders
    set objOverMappe = objFSO.GetFolder(strPath & "\" & overmappe.Name)

    For Each objSletFil In objOverMappe.files
        objFSO.DeleteFile strPath & "\" & objOverMappe.Name & "\" & objSletFil.Name,True
    Next
next

set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes
Avatar billede daki Juniormester
02. oktober 2007 - 15:40 #10
Filer i mapperne er slettet.
Men jeg læser det som om at mapperne samt filer i selv temp-mappen også slettes. (hvilket ikke er tilfældet)

Er det korretkt?

/dan
Avatar billede sherlock Nybegynder
02. oktober 2007 - 20:45 #11
Det script du har her "renser" undermapperne til temp for filer og mapper i 1 og kun 1 niveau. Det fjerner ikke de mapper der er i temp.

Du har ikke sagt hvad det er du gerne vil. Andet end at have scriptet til at virke :)
Avatar billede daki Juniormester
03. oktober 2007 - 08:46 #12
'Du har ikke sagt hvad det er du gerne vil. Andet end at have scriptet til at virke'
Det er korrekt!!!!

Men min forståelse af scriptet er, at den tømte (i dette tilfælde) temp-mappen totalt.
Da det ikke sker vil jeg selvfølgelig gerne have det lavet sådan.

Altså opgaven består i, at få temp-mappen helt tømt.
På forhånd tak.

/dan
Avatar billede sherlock Nybegynder
03. oktober 2007 - 12:40 #13
'--------------------
option explicit

dim strPath, objFSO, objFolder
dim mappe

strPath = "C:\Cognosdata\Temp"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

for each mappe in objFolder.subfolders
    objFSO.DeleteFolder strPath & "\" & mappe.Name,True
next
set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes
Avatar billede sherlock Nybegynder
03. oktober 2007 - 12:44 #14
Hov glemte filerne !

'--------------------
option explicit

dim strPath, objFSO, objFolder
dim mappe, fil

strPath = "C:\Cognosdata\Temp"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

for each mappe in objFolder.subfolders
    objFSO.DeleteFolder strPath & "\" & mappe.Name,True
next

For Each fil In objFolder.files
    objFSO.DeleteFile strPath & "\" & fil.Name,True
Next

set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes
Avatar billede daki Juniormester
03. oktober 2007 - 13:20 #15
Mange tak.
Lige et spm. kan nedenstående lade sig gøre?

'*** Script Start ***
option explicit

dim strPath, objFSO, objFolder
dim mappe, fil

strPath = "C:\Cognosdata\Temp"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

for each mappe in objFolder.subfolders
    objFSO.DeleteFolder strPath & "\" & mappe.Name,True
next

For Each fil In objFolder.files
    objFSO.DeleteFile strPath & "\" & fil.Name,True
Next

set objFSO = nothing
set objFolder = nothing
'*** Script Slut ***


'*** Script Start ***
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
'*** Script Slut ***

/dan
Avatar billede daki Juniormester
03. oktober 2007 - 13:20 #16
I samme fil selvfølgelig :-)
Avatar billede sherlock Nybegynder
03. oktober 2007 - 15:51 #17
Med de 3 her i toppen skulle det kunne køre.
Hvis koden ellers er ok? Jeg vil ikke lige køre den her:)

dim objWMIService
dim colOperatingSystems
dim objOperatingSystem
Avatar billede daki Juniormester
03. oktober 2007 - 16:05 #18
Den nederste script (genstart) kører på serverne hver søndag kl. 12 uden problemer, pga. oprydning vil jeg gerne, at den øverste script (slette indhold i temp) kører først, inden der genstartes.

Vil flytte linier og tester så på søndag.

/dan
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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