sammy2ooo 10 Geschrieben 28. Mai 2008 Melden Teilen Geschrieben 28. Mai 2008 Ich habe eine Ordnerstruktur in etwa so: c:\temp\a\xyz c:\temp\a\documents\ c:\temp\a\... c:\temp\b\bla\ c:\temp\b\documents\ c:\temp\... Jetzt möchte ich von jedem Ordner "documents" die Grösse bestimmen und das Ergebnis in eine Datei schreiben. Aber irgendwie hakt es bei: "Call CheckFolder(objCurrentFolder)" Wie es ausschaut enthält im Macro CheckFolder objCurrentFolder.SubFolders überhaupt keine Elemente... Kann mir jemand erklären wo der Logikfehler liegt? rootFolder = "c:\temp" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolders = objFSO.GetFolder(rootFolder) WScript.Echo objFolders.Path For each objFolder In objFolders.SubFolders If objFSO.FolderExists(objFolder.path & "\documents") Then Set objCurrentFolder = objFSO.GetFolder(objFolder.path & "\documents") Call CheckFolder(objCurrentFolder) Else WScript.Echo "noe ordner existiert nicht " End If Next Sub CheckFolder(objCurrentFolder) Const debug = False Const outputFile = "test.txt" Wscript.Echo objCurrentFolder.Path If debug then WScript.Echo "Now in CheckFolder" WScript.Echo "jo" For Each objFolder In objCurrentFolder.SubFolders FolderSize = objFolder.Size data = objFolder.Path & vbTab & vbTab & vbTab & vbTab & Round(FolderSize/1024/1024) & "MB" FolderSize = 0 if debug then WScript.Echo "CheckFolder: " & data Call append(outputFile, data) Next ' Recurse through all of the folders For Each objNewFolder In objCurrentFolder.subFolders CheckFolder(objNewFolder) Next If debug Then WScript.Echo "Now leaving CheckFolder" End Sub Sub append(...) ... End Sub – Oh Gott, man muss ja nicht gleich das Rad neuerfinden... habe nicht gewusst, dass objFolder.size auch subfolders beinhaltet... :rolleyes: VBScript Folder Object Size Property rootFolder = "c:\temp" destFile = "output.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolders = objFSO.GetFolder(rootFolder) For Each objFolder In objFolders.SubFolders If objFSO.FolderExists(objFolder.path & "\documents") Then Set objCurrentFolder = objFSO.GetFolder(objFolder.path & "\documents") ' get folder size [b]Foldersize = objCurrentFolder.Size[/b] ' construct data data = objCurrentFolder.Path & vbTab & vbTab & vbTab & vbTab & Round(FolderSize/1024/1024) & "MB" WScript.Echo data ' write data to file Call append(destFile, data) ' reset var FolderSize = 0 End If Next Zitieren Link zu diesem Kommentar
motzel 10 Geschrieben 29. Mai 2008 Melden Teilen Geschrieben 29. Mai 2008 Hallo, mit AutoIT AutoIt v3 - Automate and Script Windows Tasks - For Free! geht es schneller ;-) $size = DirGetSize("C:") Msgbox(0,"","Size(MegaBytes):" & Round($size / 1024 / 1024)) $size = DirGetSize("C:\Windows", 2) Msgbox(0,"","Size(MegaBytes):" & Round($size / 1024 / 1024)) $timer = TimerInit() $size = DirGetSize("\\10.0.0.1\h$",1) $diff = Round(TimerDiff($timer) / 1000) ; time in seconds If IsArray($size) Then Msgbox(0,"DirGetSize-Info","Size(Bytes):" & $size[0] & @LF _ & "Files:" & $size[1] & @LF & "Dirs:" & $size[2] & @LF _ & "TimeDiff(Sec):" & $diff) EndIf Gruß motzel Zitieren Link zu diesem Kommentar
kwakS 10 Geschrieben 11. Juni 2008 Melden Teilen Geschrieben 11. Juni 2008 Hallo Sammy, ich habe dein Script ein wenig angepasst. Mit dem Script will ich die Auslastung unseres Filesservers pro Ordner auflisten. Jetzt kommt es bei einem Ordner immer zu einer Fehlermeldung: Fehler 800A004C Der Pfad wurde nicht gefunden. Da ich ein Neuling in Sachen Vb Script bin, stellt sich mir die Frage ob das Script mit langen Ordnernamen zurecht kommt oder nicht. Denn ich habe das mal auf einen Ordner herunter brechen können, wo das Script auf die Nase fällt. Die Ordnerbeszeichnung ist knapp 50 Zeichen lang. Daher meine Vermutung, dass es eventl. an der Länge liegt. Dieses AutoIt Tool habe ich mir mal installiert aber ich habe nicht wirklich den Vorteil in diesem Tool gesehen. Gibt es dazu eine GUI o.ä.??? Zitieren Link zu diesem Kommentar
Caddy24 10 Geschrieben 11. Juni 2008 Melden Teilen Geschrieben 11. Juni 2008 @kwaks: Schau Dir mal Treesize Professionell an... Vielleicht eine Alternative zum Scripten ;) 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.