Mehrere Ordner gleichzeitig erstellen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Mehrere Ordner gleichzeitig erstellen

    Hi,

    ich möchte gerne in einer Textbox (Multiline) mehrer Ordner Namen eingeben die danach gleichzeitig erstellt werden.
    Ich gebe in die Texbox zb als Ordner Namen Test, Test1, Test2 ein.

    Wenn ich jetzt auf Ordner erstellen klicke kommt aus der Msg "Ordner ist schon vorhanden. Es wurde aber kein Ordner erstellt.
    Gebe ich in die Textbox nur einen Ordnernamen ein klappt es. Der Ordner wird erstellt.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Try
    3. My.Computer.FileSystem.CreateDirectory(ComboBox1.Text + TextBox1.Text)
    4. Catch ex As Exception
    5. MsgBox("Ordner ist schon vohanden")
    6. End Try
    7. End Sub


    Kann mir jemand einen Tipp geben wie ich mehrere Ordner gleichzeigt erstellen kann?
    Bilder
    • ordner erstellen.jpg

      8,17 kB, 344×135, 101 mal angesehen
    Mit Deinen Eingaben erhieltest Du folgenden Pfad: D:\test#test2#test3
    wobei jedes # für eine neue Zeile stünde. Was für ein Ordnername. Wundert mich, dass der Compiler da nicht gleich rummeckert. Du musst mit TextBox1.Lines arbeiten. Da bekommst Du ein String-Array, wo jeder Eintrag für je eine TextBox-Zeile steht:

    VB.NET-Quellcode

    1. For Each Line In TextBox1.Lines
    2. IO.Directory.CreateDirectory(Io.Path.Combine(ComboBox1.Text, Line))
    3. Next


    EDIT: Öhm. Der Compiler meckert ja auch: System.ArgumentException: "Illegales Zeichen im Pfad." Kommt davon, wenn man voreilig mit Try-Catch arbeitet und dann auch noch den User mit MsgBox("Ordner ist schon vohanden") auf die falsche Fährte führt. Wenn Try-Catch schon verwendet wird, dann gezielt. Will heißen: Man gibt den genauen Exception-Typ an, den man erwartet. Sonst kommt sowas raus und man blickt nicht mehr durch. Außerdem wird das Verzeichniserstellen nicht mit einer Exception quittiert, wenn das Verzeichnis schon da ist. Daher läuft Deine Try-Catch-Geschichte eh ins Leere.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Perfekt sogar

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.IO
    4. Imports System.Text
    5. Module Module1
    6. Sub Main()
    7. Dim spath As String = "C:\1\2\3\4\5\myfile.txt"
    8. MakeDirectories(spath)
    9. 'Weiterer Code
    10. End Sub
    11. Private Sub MakeDirectories(ByVal spath As String)
    12. Dim dirpath = Path.GetDirectoryName(spath)
    13. If Not Directory.Exists(dirpath) Then
    14. Directory.CreateDirectory(dirpath)
    15. End If
    16. End Sub
    17. End Module



    Freundliche Grüsse

    exc-jdbi

    exc-jdbi schrieb:

    Perfekt sogar
    Noch perfekter:

    VB.NET-Quellcode

    1. Sub Main()
    2. Dim spath As String = "C:\1\2\3\4\5\myfile.txt"
    3. Directory.CreateDirectory(spath)
    4. 'Weiterer Code
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es ging m.E. nicht darum, aus D:\ und

    Quellcode

    1. Test
    2. foo
    3. bar

    folgendes Verzeichnis zu erstellen: D:\Test\foo\bar. Sondern D:\Test, D:\foo, D:\bar
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.