Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB4, VB5, VB6 | 29.08.01 |
Verschachtelte Verzeichnisse erstellen Eine Routine, mit welcher ein Verzeichnis beliebiger Verzeichnistiefe erstellt werden kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.662 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, Win8, Win10, Win11 | Beispielprojekt auf CD |
Der Befehl zum Erstellen eines Verzeichnisses lautet, wie allgemein bekannt: MkDir (MakeDir). Mit diesem Befehl lässt sich aber nur genau ein Verzeichnis erstellen, d.h. soll z.B. ein Verzeichnis innerhalb eines anderen Verzeichnisses erstellt werden, wobei das übergeordnete Verzeichnis noch nicht existiert, so erhalten Sie beim Versuch das Verzeichnis per MkDir zu erstellen einen Laufzeitfehler.
Die nachfolgende Funktion schafft Abhilfe. Übergeben Sie der Funktion das zu erstellende Verzeichnis bzw. den zu erstellenden Verzeichnispfad und geben optional an, ob ein Hinweis erscheinen soll, sollte ein Fehler auftreten (z.B. wenn Sie nicht die benötigten Rechte zum Erstellen des Verzeichnisses besitzen).
Die Vorgehensweise der Funktion ist wie folgt:
Der übergebene Verzeichnispfad wird innerhalb einer While...Wend-Schleife in seine Einzelpfade zerlegt. Es wird dann versucht, das Verzeichnis zu erstellen, wobei ganz gezielt der Fehler 75 "abgefangen" wird, der wiederum besagt, dass das Verzeichnis bereits existiert. Auf diese Weise werden dann alle Einzelverzeichnisse der Reihe nach erstellt.
War der Funktionsaufruf erfolgreich, so wird True zurückgegeben, andernfalls False.
' Verschaltete Verzeichnisse erstellen Public Function MakePath(ByVal sPath As String, _ Optional ByVal ShowMsg As Variant) As Boolean Dim antwort As Integer Dim Dummy As String If IsMissing(ShowMsg) Then ShowMsg = False antwort = 0: Err = 0 Dummy = "" On Local Error Resume Next While Len(sPath) > 0 And antwort = 0 If Left$(sPath, 2) = "\\" Then Dummy = Dummy + "\\" sPath = Mid$(sPath, 3) ElseIf left$(sPath, 1) = "\" Then Dummy = Dummy + "\" sPath = Mid$(sPath, 2) ElseIf Mid$(sPath, 2, 2) = ":\" Then Dummy = Dummy + left$(sPath, 3) sPath = Mid$(sPath, 4) End If While left$(sPath, 1) <> "\" And Len(sPath) > 0 Dummy = Dummy + left$(sPath, 1) sPath = Mid$(sPath, 2) Wend Err = 0 MkDir Dummy If Err <> 75 And Err <> 0 Then If ShowMsg Then antwort = MsgBox("Fehler beim Erstellen " & _ "des Verzeichnisses!" + vbCrLf + 48, "Fehler") Else antwort = 1 End If End If Wend On Local Error GoTo 0 MakePath = (antwort = 0) End Function
Beispielsaufruf:
MakePath "c:\visual basic\myProjekte\test"
Das obige Beispiel erstellt demnach alle übergeordneten Verzeichnisse (visual basic und myprojekte), falls diese noch nicht existieren. Erst dann wird das Verzeichnis "test" erstellt.