tuxhunt3r
Goto Top

VBS - Alle Files mit einer bestimmten Endung zählen (mit allen Unterordnern)

Hallo ans Forum

Ich will in einem Ordner und allen Unterordnern alle Dateien mit einer bestimmten Endung zählen. Folgendes habe ich bereits:
Function DoFolders(Fld, Typ, Counter)
                     Set objFSO = CreateObject("Scripting.FileSystemObject")  
	Set Folder = ObjFSO.GetFolder(Fld)
	For Each SubFolder In Folder.SubFolders
		DoFolders SubFolder, Typ, Counter
	Next
	
	For Each File In Folder.Files
		Set objFile = objFSO.GetFile(File)
		if lcase(objFSO.GetExtensionName(objFile)) = lcase(Typ) Then
			Counter = Counter + 1
		End if
	Next  
                     DoFolders = Counter
End Function

Das Ziel ist, dass der Rückgabewert der Funktion der Anzahl Dateien dieses Dateityps entspricht. Mit dieser Funktion stimmt das Ergebnis allerdings nicht, da die Countervariable bei jedem Selbstaufruf wieder überschrieben wird. Offenbar fehlt mir das logische Vorstellungsvermögen oder sonst irgendwas, aber ich komme nicht auf die richtige Lösung, wie man dies lösen kann. Was muss ich tun, um die richtige Anzahl zu bekommen? Ich habe einen Blackout und mein Programmiermentor ist momentan in den Ferien....

Gruss TuXHunT3R

Content-Key: 122057

Url: https://administrator.de/contentid/122057

Printed on: April 23, 2024 at 16:04 o'clock

Member: AndreasHoster
AndreasHoster Aug 05, 2009 at 09:33:43 (UTC)
Goto Top
2 Möglichkeiten:
1. Die Variable global definieren und gar nicht übergeben sondern immer mit der globalen arbeiten. Wobei globale Variablen fehleranfällig sind.
2. Den Rückgabewert der Funktion auch VERWENDEN.
In Zeile 5 übergibst Du zwar den Wert Counter, aber der Rückgabewert, wieviele in dem Ordner gefunden werden, wird verworfen.
Eventuell so (nicht getestet):
counter = counter + DoFolders(SubFolder, Typ, Counter)
Member: TuXHunt3R
TuXHunt3R Aug 05, 2009 at 20:37:18 (UTC)
Goto Top
Herzlichen Dank für die Antwort.
Ich habe nun die beiden Variablen mit "public MyVar" global definiert, mein Problem ist soweit gelöst.