Dateien löschen, Exception

12/03/2009 - 14:29 von Helmut Schneider | Report spam
Hi,

ich möchte Dateien àlter X löschen. Dabei bekomme ich direkt nach dem
Löschen der ersten Datei (delete.f) eine Exception (80020009), obwohl die
Datei gelöscht wird. Warum? Das lief früher[tm] einwandfrei.

Danke und Gruß, Helmut

Option explicit

DIM foldername
DIM folder
DIM fso
DIM files
DIM f
DIM subfolder
DIM f_subfolder
DIM timespan
DIM offset
DIM logfile

foldername = "\\server.domain.tld\DAT"
timespan = 60*24*90 ' Minuten = 90 Tage
offset = timespan*(1/(24*60))

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(foldername)
Set logfile = fso.CreateTextFile(foldername & "\filestodelete.log", True)

DeleteInFolder(folder)
set fso = Nothing
set folder = Nothing
set logfile = Nothing
wscript.quit

Sub DeleteInFolder(folder)
Set files = folder.Files
For Each f In files
If (((now - (f.DateCreated) >= offset)) AND ((now -
(f.DateLastModified)) >= offset)) then
logfile.WriteLine "Deleting " & f & ", created at " & (now -
(f.DateCreated) >= offset) & ", last modified " & (now -
(f.DateLastModified))
f.Delete
logfile.WriteLine "Deleted" & f
End If
Next
Set subfolder = Folder.SubFolders
For Each f_subfolder In subfolder
DeleteInFolder(f_subfolder)
Next
End Sub

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
 

Lesen sie die antworten

#1 Pegasus [MVP]
12/03/2009 - 18:07 | Warnen spam
"Helmut Schneider" wrote in message
news:
Hi,

ich möchte Dateien àlter X löschen. Dabei bekomme ich direkt nach dem
Löschen der ersten Datei (delete.f) eine Exception (80020009), obwohl die
Datei gelöscht wird. Warum? Das lief früher[tm] einwandfrei.

Danke und Gruß, Helmut

Option explicit

DIM foldername
DIM folder
DIM fso
DIM files
DIM f
DIM subfolder
DIM f_subfolder
DIM timespan
DIM offset
DIM logfile

foldername = "\\server.domain.tld\DAT"
timespan = 60*24*90 ' Minuten = 90 Tage
offset = timespan*(1/(24*60))

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(foldername)
Set logfile = fso.CreateTextFile(foldername & "\filestodelete.log", True)

DeleteInFolder(folder)
set fso = Nothing
set folder = Nothing
set logfile = Nothing
wscript.quit

Sub DeleteInFolder(folder)
Set files = folder.Files
For Each f In files
If (((now - (f.DateCreated) >= offset)) AND ((now -
(f.DateLastModified)) >= offset)) then
logfile.WriteLine "Deleting " & f & ", created at " & (now -
(f.DateCreated) >= offset) & ", last modified " & (now -
(f.DateLastModified))
f.Delete
logfile.WriteLine "Deleted" & f
End If
Next
Set subfolder = Folder.SubFolders
For Each f_subfolder In subfolder
DeleteInFolder(f_subfolder)
Next
End Sub

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn



Es würde mich sehr überraschen, wenn dein Script je einwandfrei lief. In
dieser Zeile
f.Delete
löschst Du das Objekt "f", so dass es nicht mehr existiert, und in der
nàchsten Zeile

logfile.WriteLine "Deleted" & f

beziehst Du dich wieder darauf. Das geht natürlich nicht! Am einfachsten ist
es, die Reihenfolge der Zeilen zu àndern:

logfile.WriteLine "Deleting" & f.path
f.Delete

Ähnliche fragen