Re: Ordner rekursive durchsuchen. Bei Zugriffsfehler Skript fortsezten, wie

Tech-Archive recommends: Fix windows errors by optimizing your registry




"Stefan Kahlert" <skahlert@xxxxxxxxxxxxxx> wrote in message
news:efyzqKsfIHA.6092@xxxxxxxxxxxxxxxxxxxxxxx
Hallo zusammen,
hab ein Skript welches einen Ordner samt Unterordner auflistet.
Funktioniert soweit auch gut.
Das Problem ist nur, falls das Skript auf einen Ordner "trifft" auf den es
keinen Zugriff hat,
bricht bricht es ab. Soweit ach logisch :-)
Jetzt möchte ich gerne das das Skript einfach mit dem nächsten Ordner
fortfährt.
Bin mit der rekursion im Detail nicht vertraut.

Ich kann mit zwar den Fehler und das Verzeichnis anzeigen lassen an dem
der Zugriff scheiterte.
Der Hintergrund ist wir haben zig Tausende "Altdaten" in unzähligen
unterordnern.
Jetzt möchte ich natürlich nicht in jeden Ordner nachschauen ob
Berechtigungen bestehen.
Eine Liste mit Ordnern auf die der Zugriff verweigert wurde wäre
Hilfreich.

Besten Dank für Eure Tips


PS. Es tritt der Fehler 70 auf "Zuigriff verweigert"

Mfg

Stefan Kahlert





hier mal der Code

on error resume next

Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\temp"

Set objFolder = objFSO.GetFolder(objStartFolder)
set logfile = objFSO.opentextfile("C:\logfile.txt", 2, true,0)

Wscript.Echo objFolder.Path
Set colFiles = objFolder.Files
For Each objFile in colFiles
logfile.writeline "Datei" &objFSO.GetAbsolutePathName(objfile)
Next


ShowSubfolders objFSO.GetFolder(objStartFolder)
if err.number <> 0 then MsgBox ("Fehler Nr " & CStr(Err.Number) & ", " &
Err.Description) & objFolder.Path
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Wscript.Echo Subfolder.Path
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile in colFiles
logfile.writeline "Datei" &objFSO.GetAbsolutePathName(objfile)
Next

ShowSubFolders Subfolder
Next
End Sub



Falls Du bloss ein Verzeichnis aller Dateien erstellen willst, ist die
folgende Befehlszeile weitaus die einfachste Lösung, weil jemand
anders das Rad für dich schon erfunden hat:

dir /b /s c:\temp > c:\Logfile.txt

Der Befehl arbeitet rekursiv und wird auch mit gesperrten
Verzeichnissen fertig.


.



Relevant Pages