PDA

Vollständige Version anzeigen : Ordner in einem Verzeichnis zählen


Verena Grieshaber
03.04.2001, 07:02
Hallo Forum!

Ich möchte Verknüpfungen in mehrere Unterverzeichnisse eines Ordners kopieren.
Dies möchte ich über eine Schleife tun. Dazu muß ich aber erst die Unterordner zählen.
Ein Laufwerks- und Verzeichnisliste erstellen kann ich immer hin und den ausgewählten Pfad herausfiltern auch. Hat jemand eine Idee zum Ordner zählen?
Ihr würdet mir sehr helfen.

MfG
Verena

Manuela Kulpa
03.04.2001, 08:08
Hallo Verena!

Anbei eine kleine Abwandlung des Tipps:

<a href="http://www.kulpa-online.de/tipps/visualbasic/101.htm" target="_blank">Stefan's VB-Tipps - FAQ 1.1 Wie erhalte ich die Anzahl bestimmter Dateien in einem Ordner</a>

<PRE><FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Option</FONT> <FONT COLOR=#000080>Explicit</FONT>

<FONT COLOR=#008000>'Abwandlung des Tipps:</FONT>
<FONT COLOR=#008000>'FAQ 1.1: Wie erhalte ich die Anzahl bestimmter Dateien in einem Ordner?</FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Const</FONT> MAXPATH <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 260

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Type</FONT> FILETIME
dwLowDateTime <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
dwHighDateTime <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Type</FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Type</FONT> WIN32_FIND_DATA
dwFileAttributes <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
ftCreationTime <FONT COLOR=#000080>As</FONT> FILETIME
ftLastAccessTime <FONT COLOR=#000080>As</FONT> FILETIME
ftLastWriteTime <FONT COLOR=#000080>As</FONT> FILETIME
nFileSizeHigh <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
nFileSizeLow <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
dwReserved0 <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
dwReserved1 <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
cFileName <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT> * MAXPATH
cAlternate <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT> * 14
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Type</FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> FindFirstFile <FONT COLOR=#000080>Lib</FONT> "kernel32" <FONT COLOR=#000080>Alias</FONT> _
"FindFirstFileA" _
(<FONT COLOR=#000080>ByVal</FONT> lpFileName <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>, _
lpFindFileData <FONT COLOR=#000080>As</FONT> WIN32_FIND_DATA) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> FindNextFile <FONT COLOR=#000080>Lib</FONT> "kernel32" <FONT COLOR=#000080>Alias</FONT> _
"FindNextFileA" _
(<FONT COLOR=#000080>ByVal</FONT> hFindFile <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>, _
lpFindFileData <FONT COLOR=#000080>As</FONT> WIN32_FIND_DATA) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> FindClose <FONT COLOR=#000080>Lib</FONT> "kernel32" _
(<FONT COLOR=#000080>ByVal</FONT> hFindFile <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Function</FONT> CountFoldersInFolder(sSourcePath <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Methode: | Zählt die Anzahl Ordner in einem Ordner</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Parameter: | sSourcePath = gültiger Ordnerpfad</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Rückgabe: | Anzahl Ordner</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#000080>Const</FONT> FILE_ATTRIBUTE_DIRECTORY <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = &H10
<FONT COLOR=#000080>Const</FONT> INVALID_HANDLE_VALUE <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = -1
<FONT COLOR=#000080>Dim</FONT> uWFD <FONT COLOR=#000080>As</FONT> WIN32_FIND_DATA
<FONT COLOR=#000080>Dim</FONT> sFileType <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> sFldItem <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> lResult <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>Dim</FONT> lFile <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>Dim</FONT> lNext <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>Dim</FONT> lCount <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> Resume <FONT COLOR=#000080>Next</FONT>
CountFoldersInFolder = 0
<FONT COLOR=#000080>If</FONT> VBA.Right$(sSourcePath, 1) <> "\" <FONT COLOR=#000080>Then</FONT>
sSourcePath = sSourcePath & "\"
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
sFileType = "*.*"
lFile = FindFirstFile(sSourcePath & sFileType, uWFD)
<FONT COLOR=#000080>If</FONT> (lFile = INVALID_HANDLE_VALUE) <FONT COLOR=#000080>Then</FONT> <FONT COLOR=#000080>Exit</FONT> <FONT COLOR=#000080>Function</FONT>
<FONT COLOR=#000080>If</FONT> lFile <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>Do</FONT>
<FONT COLOR=#000080>If</FONT> (lFile <> INVALID_HANDLE_VALUE) <FONT COLOR=#000080>And</FONT> _
(uWFD.dwFileAttributes <FONT COLOR=#000080>And</FONT> FILE_ATTRIBUTE_DIRECTORY) <FONT COLOR=#000080>Then</FONT>
sFldItem = Left(uWFD.cFileName, InStr(uWFD.cFileName,
vbNullChar) - 1)
<FONT COLOR=#000080>If</FONT> sFldItem <> "." <FONT COLOR=#000080>And</FONT> sFldItem <> ".." <FONT COLOR=#000080>Then</FONT>
Debug.<FONT COLOR=#000080>Print</FONT> sFldItem <FONT COLOR=#008000>'Testausgabe des gefundenen Ordners</FONT>
lCount = lCount + 1
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
lNext = FindNextFile(lFile, uWFD)
<FONT COLOR=#000080>Loop</FONT> <FONT COLOR=#000080>Until</FONT> lNext = 0
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
lResult = FindClose(lFile)
CountFoldersInFolder = lCount

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Function</FONT>
<FONT COLOR=#808080></FONT>
</FONT></PRE>

LLAP

<font size="1" face="Century Gothic">Moderatorenanmerkung: Überarbeitung, durch den Wechsel der Forensoftware zum 01.01.2003 verursacht: in diesem Beitrag Link(s) korrigiert.
jinx – 09.07.2003</font>