Refnex 10 Geschrieben 9. August 2012 Melden Teilen Geschrieben 9. August 2012 (bearbeitet) Hallo an alle, ich habe ein kleines problem. ich habe hier ein script was in verschieden ordner zugreiffen soll und dann den inhalt bzw die ordner darunter löscht. ausser sie sind in einer exclusions liste erfasst. local funzt das script 1. klasse ber sobale ich es auf ein UNC Pfad \\coputer schicke kommt der Fehler 0x80041021 hier mal das script evtl kann mir einer von euch sagen wo der fehler liegt :confused: bearbeitet 9. August 2012 von Refnex Zitieren Link zu diesem Kommentar
Refnex 10 Geschrieben 9. August 2012 Autor Melden Teilen Geschrieben 9. August 2012 '-Konstanten---------------------------------------------- Const ForReading = 1, ForWriting = 2, ForAppending = 8 '-Array Variablen die zu überprüfenden Ordner getrennt mit ; angeben------ strRootFolder = "\\server510\test\1test; " 'CompName 'strComputer =strRootFolder '-Variablen----------------------------------------------- strRootFolder = split(strRootFolders, ";") strLogFile = "F:\Rekursiv_loeschen\log.txt" '-Ablage der Log Datei strExcludeFile = "F:\Rekursiv_loeschen\KillfolderExclude.txt" ' In diesem Textfile bitte die zu Exclusion Freigegebenen Verzeichnisse eintragen lngDays = 1 lngRetries = 3 'Anzahl Versuche, wenn Ordner-löschen fehlschlägt lngRetSleepTime = 1000 'Wartezeit nach Fehlversuch in ms '--- 'Wenn Statusmeldungen in DOS-Box gewünscht, Script mittels "cscript.exe KillOldFolders.vbs" starten! If LCase (Right (WScript.FullName, 11)) <> "cscript.exe" Then boolcsript = False Else boolcscript=True Set objWMIService = GetObject("winmgmts:\\" & strRootFolders & "\root\cimv2") Set fso = CreateObject("Scripting.FileSystemObject") Set ofolder = fso.GetFolder(strRootFolders) Set flog = fso.OpenTextFile(strLogFile, ForAppending, True) Writelog "---- Alte Ordner in " & strRootFolders & " werden gelöscht! - " & Now() Writelog "Ausgeschlossene Verzeichnisse:" Dim arrEx() maxExcludes=0 If fso.FileExists(strExcludeFile) Then Set fex = fso.OpenTextFile(strExcludeFile, ForReading) Do While Not fex.AtEndOfStream maxExcludes=maxExcludes+1 ReDim Preserve arrEx(maxExcludes) arrEx(maxExcludes) = fex.readline() Writelog arrEx(maxExcludes) Loop fex.close End If Writelog "----" 'Durchlaufe alle Unterverzeichnisse For Each folder In ofolder.subfolders KillfolderSub folder Next Writelog "---- Script beendet - " & Now() if not boolcscript then MsgBox "Script beendet - " & Now() '--- 'ENDE '--- Sub KillfolderSub(objFolder) 'On Error Resume Next strFolder = objFolder.Path ' vardatecreated = objFolder.datecreated 'Wenn Ordner in "Exclude"-Liste steht, nicht löschen! boolExclude = False For i=1 To maxExcludes if lcase(strFolder) = lcase(trim(arrEx(i))) then boolExclude = True Next If boolExclude Then Writelog "Ordner " & strFolder & " incl. Unterordner nicht gelöscht (Exclude-Regel!)" Else 'Durchlaufe alle Unterverzeichnisse For Each subfolder In objFolder.subfolders KillfolderSub subfolder Next 'Wenn Ordner vor mehr als x Tagen erstellt wurde... ' WScript.Echo vardatecreated & " - "& Date & " - "& lngDays ' If vardatecreated < (Date - lngDays) Then ' WScript.Echo "alt löschen" 'Alle Dateien im Ordner löschen For Each file In objFolder.Files vardatecreated = file.DateLastModified 'Script.Echo file & " - "&vardatecreated & " - "& Date & " - "& lngDays If vardatecreated < (Date - lngDays) Then Err.Clear strFile = file.Path fso.DeleteFile strFile, True If Err = 0 Then Writelog "Datei " & strFile & " gelöscht" Else Writelog "Datei " & strFile & " konnte nicht gelöscht werden! - Fehler " & Err & " (" & Err.Description & ")" End If Else Writelog "Datei " & strFile & " nicht gelöscht! - zu Neu" & vardatecreated End If Next ' End If End If On Error Goto 0 End Sub '--- 'Löschen leerer Ordner '--- mko (strRootFolders) Sub mko (sfolder) Set fso = CreateObject("Scripting.FileSystemObject") Set fsofolder = fso.GetFolder(sFolder) For Each subfolder In fsofolder.SubFolders mko(subfolder.Path) Next If fsofolder.Files.Count = 0 And fsofolder.SubFolders.Count = 0 Then fsofolder.Delete vbTrue End If End Sub '--- Sub Writelog(strMessage) flog.writeline strMessage if boolcscript then WScript.echo strMessage End Sub Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.