Befehlsreferenz - Dateisystem: Dir-Funktion
VB-Versionen: VB4 | VB5 | VB6
Beschreibung:
Die Dir-Funktion gibt einen Datei- oder Verzeichnisnamen zurück, der mit einem bestimmten Suchmuster, einem Dateiattribut oder mit der angegebenen Laufwerksbezeichnung übereinstimmt.
Syntax:
Dir ( [Pathname, [Attributes]] )
Parameter:
Pathname | Optional. (String) Zeichenfolgenausdruck, der einen Dateinamen angibt und ein Verzeichnis sowie das Laufwerk enthalten kann. Der Rückgabewert ist Null, wenn der Pfad aus Pfadname nicht gefunden werden kann. |
Attributes | Optional. (Konstante) einer der folgenden Konstanten oder eine Kombination daraus |
Konstanten:
vbDirectory | 16 (&H10) Verzeichnis |
vbHidden | 2 (&H2) Versteckt |
vbNormal | 0 (&H0) Normal |
vbSystem | 4 (&H4) Systemdateien |
vbVolume | 8 (&H8) Datenträgerbezeichnung |
Wird für Konstante vbVolume angegeben, werden alle anderen Attribute ignoriert.
Mit dem ersten Aufruf der Dir-Funktion mit angegebenen Parametern, wird die Funktion initialisiert. Wenn man den gleichen Aufruf immer wieder wiederholt, dann wird jedesmal der gleiche Datei- oder Verzeichnisname zurückgegeben.
Deswegen muss nach dem ersten Aufruf die Dir-Funktion ohne Parameter aufgerufen werden, solange bis Null (Leerstring) zurückgegeben wird. Dies ist wohl leichter an einem Beispiel zu sehen:
Beispiel:
' Mit folgender Funktion werden alle Textdateien eines Ordners aufgelistet Dim cFile As String cFile = Dir("C:\*.TXT") ' Alle Textdateien im Verzeichnis C: ausgeben Do While cFile <> "" ' Wiederholen bis cFile="" Debug.Print cFile cFile = Dir ' Aufruf der Funktion ohne Parameter!! Loop
Wie man sieht, können auch Platzhalter verwendet werden:
* (kein oder mehrere beliebige Zeichen)
? (ein beliebiges Zeichen)
Kleinere Probleme gibt es (mir unverständlicherweise) bei Verzeichnissen. Dort sollte nochmals geprüft werden (mit Hilfe der GetAttr-Funktion), ob es sich um ein Verzeichnis handelt.
Siehe auch: | GetAttr-Funktion |