Jump to content

FolderSize bestimmen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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	

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • 2 Wochen später...

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.ä.???

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...