Ordner kopieren, aber einige Dateien ausschließen

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Ordner kopieren, aber einige Dateien ausschließen

    Hallo,

    Ich habe gerade ein Programm gebastelt (Gesamter Code aus einem VB-Buch) und dann habe ich das Programm FreeFileSync gesehen. Es kann Ordner Synchonisieren und dabei einige Dateien vom Synchonisieren ausschließen. Ist das möglich, mit NET zu machen?
    Google-Suche hat nichts gebracht...


    Edit by Dodo:
    -> Topic verschoben (Hauptforum => Grundlagen)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ChipPRO Österreich“ ()

    Natürlich is das Möglich, einfach die Dateien die nicht kopiert werden sollen, nicht Kopieren.

    Dodo schrieb:

    Natürlich is das Möglich, einfach die Dateien die nicht kopiert werden sollen, nicht Kopieren.


    true story und btw. ist dieser Post wieder genau nach dem selben Schema, deswegen auch die Antwort!
    Du musst unterscheiden, dass du nicht ganze Ordner kopierst sondern Dateien innerhalb des Ordners.
    Sowas wie CopyDirectory gibt es afaik nicht.

    Such mal nach Rekursion. Hierbei wird eine Funktion immer wieder selbst aufgerufen wenn es weitere Unterordner gibt.
    Und hierbei kannst du auch gewisse Dateien (sogar Ordner) ausnehmen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Danke,

    und ja, ich hab das Buch gelesen (also die VB.Net Kapitel, es waren auch ein paar über Datenbanken, so was mach ich nicht).

    Mit

    VB.NET-Quellcode

    1. My.Computer.FileSystem.CopyDirectory("c:\QuellDir", "c:\ZielDir"

    Kann man die Ordner kopieren.

    Also,
    ich hab keine Ahnung, wie das mit dem "Kopiere Ordner, aber schließe einige Dateien aus" funktionieren soll.
    Vielleicht mit einer CheckedListBox (oder wie auch immer) alle Dateien des ordner auflisten und die, die "Checked" sind kopieren?
    Dann solltest Du dies verwenden:

    VB.NET-Quellcode

    1. For Each SOURCE In VIELE_FILES
    2. If True Then
    3. System.IO.File(SOURCE, DESTINATION)
    4. End If
    5. Next
    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!
    Also,

    Ich denke SOURCE ist das Quellverzeichniss, DESTINATION das Zielverzeichnis und VIELE_FILES Was ist das?

    //EDIT\\

    Eine ListBox
    Name = VIELE_FILES

    Erstmal Imports

    VB.NET-Quellcode

    1. Imports System.IO

    Dann mal Deklarieren

    VB.NET-Quellcode

    1. ‛Das Quellverzeichnis
    2. Dim SOURCE As String = FolderBrowseDialog1.SelectedPath
    3. ‛Das Zielverzeichniss
    4. Dim DESTINATION As String = FolderBrowseDialog2.SelectedPath


    Der eigentliche Code

    VB.NET-Quellcode

    1. For Each SOURCE In VIELE_FILES
    2. If True Then
    3. System.IO.Files (SOURCE, DESTINATION)
    4. End If
    5. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ChipPRO Österreich“ ()

    *facapalm*

    du kannst aber schon code lesen, und nicht nur die variablen ubersetzen oder? du weisst was eine for schleife ist oder?

    @RodFromGermany: sollte man per as nicht immer setzen was es ist?(inner for schleife) weil ist ja eigentlich nen string und so wirds ja als object gehandled(afaik)

    ChipPRO Österreich schrieb:

    VIELE_FILES Was ist das?
    :rolleyes: Du bist doch der Kopator.

    ChipPRO Österreich schrieb:

    VB.NET-Quellcode

    1. "c:\QuellDir"
    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!
    @kinsi: afaik wird der Rückgabewert der Collection/Array/... standardmässig als Datentyp hergenommen.
    ist dieser nicht bekannt meckert glaub ich Option Strict on da was an.

    @ChipPRO Österreich:
    Mit dieser Funktion CopyDirectory kann man keine Dateien ausnehmen, sondern NUR Ordner als Ganzes kopieren
    Sieh dir mal den System.IO Namespace auf MSDN an. Hier gibt es einige Klassen zum Analysieren von Ordner (DirectoryInfo, Directory).
    Mit der Methode Getfiles kannst du alle Dateien in einer Schleifen durchlaufen und abfragen ob diese mitkopiert werden soll oder nicht.

    Das wird leider kein 1 Zeiler werden also les dich in diese Materie etwas ein
    such mal auf google "ordner rekursiv durchsuchen vb.net" da findest einiges Interesanntes.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    Gelöschter Benutzer schrieb:

    sollte man per as nicht immer setzen was es ist

    Brauchst Du nicht. Nur wenn solch Zeug außerhalb der Prozeduren in der Klasse steht, will er es haben (leider nur bei Option Explicit On).
    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!
    danke fichz, das werde ich tun :)

    //EDIT\\

    Mit "GetDirectorys" und "GetFiles" kann ich die Unterordner und Dateien auflisten (CheckedListBox).

    Nun,
    sollen alle Pfade, die in der CheckedListBox stehen und Gecheckt sind kopiert werden. Die, die nicht Gechekt sind, sollen nicht kopiert werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ChipPRO Österreich“ ()

    Dann musst Du

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. If True Then
    durch

    VB.NET-Quellcode

    1. If Item.Checked Then
    ersetuen. :D
    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!
    Danke,

    werde ich gleich ausprobieren

    //EDIT\\

    Wird benötigt:
    1x CheckedListBox

    Der Code zum Kopieren:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Dim Quelle As String = "c:\QuellDir"
    3. Dim Ziel As String = "c:\ZielDir"
    4. For Each Quelle In CheckedListBox1
    5. If Item.Checked Then
    6. System.IO.File(Quelle, Ziel)
    7. End If
    8. Next


    Der Code zum Auflisten:
    (Weiß nicht ob geht)

    VB.NET-Quellcode

    1. System.IO.GetFiles(CheckedListBox1.Items.Add)
    2. System.IO.GetDirectorys(CheckedListBox.Items.Add)



    ICH DANKE ALLE DIE HIER ETWAS GEPOSTET HABEN HERZLICH!!!

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ChipPRO Österreich“ ()

    Ehrlich gesagt glaube ich nicht, das du in der Lage bist selbstständig etwas zu "Programmieren" wie man hier sieht hast du Null Basics, du übernimmst einfach ALLES was dir gesagt wird und dezente Hinweise kannst du nicht interpretieren, weil du nicht weißt was die Hinweise bedeuten sollen.

    Willst du nicht erstmal wenigstens die Gundlagen lernen damit du uns verstehst? Nur durch Tutorial und Buch kopiererei kommt man wie du siehst nicht weit und für uns alle ist es unglaublich anstrengend für jemanden der einfach keine Ahnung hat den Lehrer zu spielen und alles haarklein dir zu erklären, weil du anscheint zu faul bist mal etwas Eigeninitiative zu zeigen.

    Geh nochmal in dich und mache für dich klar was du willst. Du hattest schon keinen guten Start in diesem Forum, bist von Beginn an negativ aufgefallen und es wird und wird nicht besser, deine Fragen sind wie die von einem 10 Jährigen Kind was die Welt verstehen will.
    Ich meine ich hatte es schon in einem anderen Thread von dir mal geschrieben.
    Les dir dieses Buch (und nimm dir sicher ein paar Tage/Wochen Zeit dafür)
    Dieses kannst du dir als PDF downloaden und es beinhaltet ALLES was du für einen guten Einstieg wissen musst. (ich lernte den Großteil aus diesem Buch).

    Hast du dieses Buch durch hast du sicher mehr als gute Basics und kannst denk ich ohne große Hilfe das Programm welches du vorhast umsetzen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Danke,

    hab aber schon ein (sehr) gutes Buch :)

    //EDIT\\

    Buchname:Visual Basic 2008 Grundlagen, ADO.NET,...
    Autor:Michael Kofler


    Edit by Manschula: Was hat eine Umfrage ("Welche VB-Version habt ihr? Ich habe VB 2010") mit diesem Thema zu tun? --> Sinnfreie Umfrage entfernt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Manschula“ ()

    Funktioniert nicht!!!

    RodFromGermany schrieb:

    Dann solltest Du dies verwenden:

    VB.NET-Quellcode

    1. For Each SOURCE In VIELE_FILES
    2. If True Then
    3. System.IO.File(SOURCE, DESTINATION)
    4. End If
    5. Next



    Hallo RodFromGermany,
    dieser Code funktioniert nicht:

    VB.NET-Quellcode

    1. For Each source In clbFileDir
    2. If Item.Checked Then
    3. Synchronize(source, dest)
    4. End If
    5. Next

    Bei clbFileDir wird angezeigt:
    Der Ausdruck ist vom Typ "System.Windows.Forms.CheckedListBox" und ist keine Auflistung.
    Ich weiß nicht weiter...