Teil eines variablen Ordnernamens auslesen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Teil eines variablen Ordnernamens auslesen

    Hallo Liebes VB-Paradise Forum,
    ich bin noch recht neu insachen VB2010 und bräuchte etwas hilfe.

    Ich möchte einen Variablen Ordnernamen auslesen, und mit einem Teil des namens einen neuen Ordner erstellen.

    Sprich, ich habe den Ordner: C:\***** - Programmdatein - Deutsch\
    Die Zeichen "*****" können eine beliebige Zahlenfolge sein.
    Und wenn der Ordner gefunden wird, soll ein neuer Ordner nur mit der Zeichenfolge ***** erstellt werden.

    Könnt ihr mir da bitte weiterhelfen?
    Besten Dank schonmal
    Kannst Du das bitte ein wenig genauer beschreiben?
    Wie Du hier siehst, können systemeigene Ordner in unterschiedlichen Programmen verschiedene View-Namen haben (abhängig von dder Sprache des jeweiligen Programms).

    Nutze zum Auslesen die .NET-Funktionalität:

    VB.NET-Quellcode

    1. Dim folder = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
    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!


    So sieht der Ordner auf Laufwerk C aus.
    Wenn nun der ordner "12345 - Programmdatein - Deutsch" gefunden wird, soll ein neuer Ordner namens 12345 auf Laufwerk D erstellt werden.
    Du könntest die alle ordner von C: ermitteln und jeweils in ein Stringarray schreiben
    Dieses Array könntest du dann mit if instr(array(index),"Programmdatein - Deutsch") durchsuchen

    Bei einem Treffer könntest du dann mit einem split auf "-" den ersten Teil des Ordnernamens auslesen und einen neuen Ordner erstellen
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Das sähe dann so aus:

    VB.NET-Quellcode

    1. Dim subdirs As String() = System.IO.Directory.GetDirectories("c:\")
    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!
    Oder einfach gleich einen Suchfilter benutzen. Dafür ist der auch da. :)

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Programmdatein - Deutsch")
    3. IO.Directory.CreateDirectory(IO.Path.Combine(searchPath, folder.Split("-"c)(0).Trim))
    4. Next
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Hallo BiedermannS,
    Danke das klappt schon ganz gut.

    Ich habe nur noch das Problem das ich es nicht schaffe den neuen Ordner wo anders zu erstellen.

    VB.NET-Quellcode

    1. IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\..\" & (IO.Path.Combine(searchPath, folder.Split("-"c)(0).Trim)))


    Damit habe ich es probiert, und scheiter hier.
    Du kannst, wenn du meinen Code benutzt, einfach bei CreateDirectory die Variable searchPath, durch den gewünschten Pfad austauschen.

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. Dim savePath as String = "d:\"
    3. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Programmdatein - Deutsch")
    4. IO.Directory.CreateDirectory(IO.Path.Combine(savePath, folder.Split("-"c)(0).Trim))
    5. Next
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    scheint nicht zu klappen.
    Der neue Ordner wird weiterhin auf C: erstellt.

    Ich habe mal was anderes ausprobiert:

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Deutsch")
    3. TextBox1.Text = (folder.Split("-"c)(0).Trim)
    4. Next
    5. End Sub

    In meiner TextBox steht danach "c:\12345" wie schaffe ich es das in der Textbox nur 12345 steht?
    Pack dies IO.Path.Combine(savePath, folder.Split("-"c)(0).Trim) in eine separate Variable.
    Setz mal einen Haltepunkt rein und sieh Dir den Inhalt der Variablen an.
    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!
    Das liegt daran, das der komplette pfad von getdirectories zurückgegeben wird.
    Mit einem zweiten Split lässt sich das lösen:

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. Dim savePath As String = "d:\"
    3. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Programmdatein - Deutsch")
    4. IO.Directory.CreateDirectory(IO.Path.Combine(savePath, folder.Split("-"c)(0).Trim))
    5. Next
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    ich hab jetzt mal ein bisschen mit split rumprobiert, aber ich bekomme es nicht hin das die TextBox ohne "C:\" ist.

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. Dim Text As String = ""
    3. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Deutsch")
    4. Text = (folder.Split("-"c)(0).Trim)
    5. Next
    6. Text.Split("\"c)
    7. TextBox1.Text = Text
    Ok ich habs hinbekommen. Ich weiß zwar nicht was genau ich hier jetzt gemacht habe (google hat mir etwas geholfen mit split) aber es geht :D

    VB.NET-Quellcode

    1. Dim searchPath As String = "c:\"
    2. Dim EQ As String = ""
    3. For Each folder As String In IO.Directory.GetDirectories(searchPath, "*- Deutsch")
    4. EQ = (folder.Split("-"c)(0).Trim)
    5. Next
    6. Dim parts() As String = Split(EQ, "\")
    7. TextBox1.Text = parts(1)

    Aod schrieb:

    VB.NET-Quellcode

    1. Dim parts() As String = Split(EQ, "\")
    Jetzt hast Du allerdings .NET- und VB6-Split-Operationen gemischt.
    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!

    Aod schrieb:

    google hat mir etwas geholfen mit split

    wenn du auf google nach .Split suchst, biste selber schuld (hihi - natürlich bist du nicht selber schuld - kannst ja nix dafür, dass Grundlagen fehlen).
    Video: Visual-Studio richtig benutzen

    Nun kannst du auch meine Frage beantworten: Was gibt String.Split zurück?