Ordnerpfad angeben,Ordner kopieren und Inhalt auslesen...

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Mike.

    Ordnerpfad angeben,Ordner kopieren und Inhalt auslesen...

    Hallo liebe Community,

    zur Zeit arbeite ich als Neuling was VB.NET angeht an meinem ersten Programm, dem Addon Downloader.

    Hauptfunktion des Programmes ist es meine automatisierten Programme herunterzualden. Dies funktioniert auch soweit, so dass ich nun eine weitere Funktion einbauen wollte.

    Anbei einmal ein Screenshot der neuen Form mit den entsprechenden Elementen.
    Kurz gesagt soll es möglich sein einen Ordnerpfad als Ziel anzugeben, einen Quellpfad anzugeben und die Dateien aus der Quelle in einen vorher festgelegten Ordner im Zielpfad zu kopieren.

    So soll es etwa aussehen:



    Also mittels des Button1 soll der Explorer geöffnet werden und man soll zum Zielordner navigieren können bzw. diesen festlegen z.B. C:\Zielordner (vermutlich mittels FolderBrowserDialog). Der entsprechende Pfad soll dann aber auch davor in der textbox ein sichtbar sein.

    Mit dem Button 2 soll sich wieder der Explorer öffnen und man soll nun zum Ordner navigieren, in welchem sich die Programme befinden z.B, C:\Programmordner. Auch dieser Pfad soll wieder in der Textbox 2 davor angezeigt werden. Weiterhin soll aber auch mittels des Button 2 die dateien des Ordners ausgelesen werden und in der Listbox aufgeführt werden.

    Mittels des Buttons 3 soll es dann möglich sein, dass alle Programme in der Listbox in den Zielordner kopiert werden. Hier soll dann de Ordner C:\Zielordner\Addons erstellt werden und in diesen neuen Ordner sollen alle Programme hinein kopiert werden.

    Kann mir da jemand helfen ?

    Ich gehe davon aus dass ich Button 1 und Button 2 mittels FolderBrowserDialog steuern muss - doch wie bekomme ich den Pfad in die textbox ?


    Als absoluter Newbie steh ich grad vor meinen Grenzen.

    danke euch schon jetzt für die Hilfe.

    Gruß Mike
    @Piter1700

    So in etwa hatte ich es auch gerade gefunden:

    Quellcode

    1. Dim fbd As New FolderBrowserDialog
    2. fbd.ShowDialog()
    3. If Windows.Forms.DialogResult.OK Then
    4. TextBox1.Text = fbd.SelectedPath
    5. End If
    6. End Sub


    Bloß wie gebe ich jetzt mit Button 2 an (nachdem ich das Verzeichnis gewählt habe9 dass alle Daten aus dem gewählten Ordner in die listbox kommen und wie mache ich Button 3 konfigurieren, um alle Dateien in den Zielpfad welcher mittels Button 1 festgelegt wurde zu kopieren ?

    Gruß Mike
    Edit:

    Nur für dich hab ich das ganze Szenario nochmal nachgebaut wie du es wolltest (hoffe ich doch mal^^).

    Bitte:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Dim kopierarray As New List(Of FileInfo)
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
    6. TextBox1.Text = FolderBrowserDialog1.SelectedPath
    7. End If
    8. End Sub
    9. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    10. If FolderBrowserDialog2.ShowDialog = DialogResult.OK Then
    11. TextBox2.Text = FolderBrowserDialog2.SelectedPath
    12. Dim ordner As New DirectoryInfo(TextBox2.Text)
    13. For Each datei As FileInfo In ordner.GetFiles()
    14. kopierarray.Add(datei)
    15. ListBox1.Items.Add(datei.Name)
    16. Next
    17. Else
    18. MsgBox("Bitte einen Ordner auswählen!")
    19. TextBox2.Text = ""
    20. End If
    21. End Sub
    22. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    23. For i As Integer = 0 To kopierarray.Count - 1
    24. File.Copy(kopierarray(i).FullName, TextBox1.Text + "\" + kopierarray(i).Name, True)
    25. Next
    26. MsgBox("Alle Dateien erfolgreich kopiert!")
    27. End Sub
    28. End Class


    Ich hoffe das stellt so ungefähr dar, was du dir vorgestellt hast: Button 1 legt den Zielordner fest, Button 2 den Ausgangsordner und lädt gleichzeitig die Dateien in ein Array und speist die Listbox mit deren Namen und schlussendlich sorgt Button 3 dafür, dass alle Dateien in den Zielordner kopiert werden. Eventuell musst du noch Try Schleifen etc. setzen, aber denke mal dass wird kein Problem sein, oder?

    Ich habe Fertig und Gute Nacht!...

    Mfg
    Piter1700

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Piter1700“ ()

    Hallo Piter1700,

    leider klappts bei mir nicht. Uch hab deinen Code unverändert mal in mein Programm eingefügt. Zunächst gibt es Fehlermeldungen bei FoilderBrowserDialog1 undFolderBrowserDialog2, dass diese nicht deklariert sind ?

    Wenn ich da die Eigenschaften anders setze oder einen Methodenstub ist der Fehler zwar weg und ich kann das Programm starten, jedoch wird hier weder bei Button1 noch bei Button 2 der Explorer für die Ordnerwahl geöffnet.

    Weiß jemand wo der Fehler liegt?

    Gruß Mike
    Is doch klar, denn ich kann ja nicht wissen wie dein Programm aufgebaut ist. Du musst schon 2 Folderbrowserdialoge über die Toolbox einfügen und sie ggf. umbennen in den Eigenschaften (aber eigentlich müsste es gehen denn ich habe alle Eigenschaften auf Standart gelassen). Leider habe ich das Projekt gelöscht sonst hätte ich es dir schicken können...

    VB.NET-Quellcode

    1. Public Class Form1


    Heißt deine Windows Form überhaupt Form1?

    Mfg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Piter1700“ ()

    Mein Fehler, hatte vergessen die beiden FolderbrowserDialogs wieder hinzuzufügen.

    Jetzt klappt alles so wie es sein soll und ich dank dir recht herzlich.

    Gleich mal noch eine weitere Frage:

    Nachdem ich den Zielordner gewählt habe soll in diesem beim Klick auf Kopieren (Button3) der Ordner "Addons" erstellt werden und dahinein automatisch die Eintrgae der Listbox1 kopiert werden.

    Weiterhin soll ein Ordenrpfad mit Textdatei erstelt werden in Form von C:\Zielordner\Ordner1\Ordner2\Ordner3\textdatei.txt

    Auch dieses beim Klick auf Button 3. In dieser textdatei sollen dann die Namen der kopierten Dateien drin stehen.

    Wier müsste ich den Code von Button 3 ändern ?

    Gruß Mike
    Keine Ahnung ob das klappt, aber versuch mal das:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Directory.CreateDirectory(TextBox1.text + "\ordner1")
    3. Directory.CreateDirectory(TextBox1.Text + "\ordner1\ordner2")
    4. Directory.CreateDirectory(TextBox1.Text + "\ordner1\ordner2\ordner3")
    5. Dim log As New StreamWriter(TextBox1.Text + "\ordner1\ordner2\ordner3\textdatei.txt")
    6. For i As Integer = 0 To kopierarray.Count - 1
    7. File.Copy(kopierarray(i).FullName, TextBox1.Text + "\" + kopierarray(i).Name, True)
    8. log.WriteLine(kopierarray(i).Name)
    9. Next
    10. log.Flush()
    11. log.Close()
    12. MsgBox("Alle Dateien erfolgreich kopiert!")
    13. End Sub


    Mfg
    Juhu klappt soweit, dass die Ornder und die textdatei angelegt wird.

    Jetzt fehlt nur noch folgendes.

    Soll im Zielverzeichnis ebenfalls noch der Ordner "Addons" angelegt werden und dort sollen dann die Dateien hineinkopiert werden.

    Das mit dem zusätzlichen Ordnerpfad und der Textdate soll ebenfalls drin bleiben.

    Gruß Mike

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Directory.CreateDirectory(TextBox1.text + "\ordner1")
    3. Directory.CreateDirectory(TextBox1.Text + "\ordner1\ordner2")
    4. Directory.CreateDirectory(TextBox1.Text + "\ordner1\ordner2\ordner3")
    5. Directory.CreateDirectory(TextBox1.text + "\Addons")
    6. Dim log As New StreamWriter(TextBox1.Text + "\ordner1\ordner2\ordner3\textdatei.txt")
    7. For i As Integer = 0 To kopierarray.Count - 1
    8. File.Copy(kopierarray(i).FullName, TextBox1.Text + "\Addons\" + kopierarray(i).Name, True)
    9. log.WriteLine(kopierarray(i).Name)
    10. Next
    11. log.Flush()
    12. log.Close()
    13. MsgBox("Alle Dateien erfolgreich kopiert!")
    14. End Sub


    Hätte man sich jetzt aber auch i-wie selbst denken können, oder?

    Mfg
    Genauso hatte ich es gemacht. Bloß den einen Backslash bei Addons hatte ich vergessen.

    Quellcode

    1. File.Copy(kopierarray(i).FullName, TextBox1.Text + "\Addons\" + kopierarray(i).Name, True)


    Deswegen hatte es nicht geklappt.

    Dank dir.

    Gruß Mike