Zum Inhalt wechseln


Foto

error 0x80041021


  • Bitte melde dich an um zu Antworten
Eine Antwort in diesem Thema

#1 Refnex

Refnex

    Newbie

  • 18 Beiträge

Geschrieben 09. August 2012 - 07:21

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 von Refnex, 09. August 2012 - 09:25.


#2 Refnex

Refnex

    Newbie

  • 18 Beiträge

Geschrieben 09. August 2012 - 07:21




'-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