Ordner auf Dateitypen prüfen?

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von FAtheone.

    Ordner auf Dateitypen prüfen?

    Hey,

    Ich würde gerne Ordner XY auf Dateityp .txt prüfen...
    Habe aber leider keine Ahnung wie ich das machen soll...
    Per My.computer.Filesystem wills nicht gehen..
    Gejooglet habe ich auch schon...

    Falls jemand weiß wie ich das schaffe wäre ich ihm
    sehr dankbar

    Viele Grüße
    Denke nach....

    Ich verstehe das nicht?

    Willst du nach kucken ob ".txt" Dateien im Ordner existieren oder ob die Datei "lalal.txt" in Ordner "C:\test" existiert d.h willst du prüfen ob Datei "C:\test\lala.txt" existiert oder ob eine Datei egal welchen Namen im .txt Format in dem Ordner z.B: "C:\test" existiert?

    Mfg

    VB.NET-Quellcode

    1. Dim Prüfe As String 'Des bei Public Class!
    2. Public Sub xPrüfe()
    3. If Prüfe = "" Then
    4. 'Hier der Code wenn keine .txt Datei im Ordner existiert!
    5. Else
    6. 'Hier der code wenn eine .txt Datei im Ordner existiert!
    7. End Sub
    8. For Each Datei As String In My.Computer.FileSystem.GetFiles("ORDNER", FileIO.SearchOption.SearchTopLevelOnly, "*.txt")
    9. Prüfe = Datei
    10. xPrüfe()
    11. Next


    Erklärung: Kucke in Ordner "ORDNER" nach ".txt" Dateien nach und xPrüfe!

    Mfg
    Also ich weiß nicht wie ich das immer schaffe ^^
    Danke vorerst... Ich kriege es aber nicht hin...
    Ich habe das ganze jetzt so gemacht:

    VB.NET-Quellcode

    1. Dim Prüfe As String 'Des bei Public Class!
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. OpenFileDialog1.ShowDialog()
    4. End Sub
    5. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    6. For Each Datei As String In My.Computer.FileSystem.GetFiles("C:\Users\Timo\Desktop", FileIO.SearchOption.SearchTopLevelOnly, "*.txt")
    7. Prüfe = Datei
    8. Next
    9. End Sub
    10. Public Sub xPrüfe()
    11. If Prüfe = "" Then
    12. msgbox("1")
    13. Else
    14. msgbox("2")
    15. End If
    16. End Sub
    17. End Class


    Edit by der_Kurt:
    * VB-Tag korrigiert *

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

    der_Kurt schrieb:

    LINQ-Variante:

    VB.NET-Quellcode

    1. Dim txtfiles = From i In IO.Directory.GetFiles("C:\XY", "*.txt") Select i
    2. For Each datei In txtfiles
    3. MsgBox(datei)
    4. Next
    Geschossen und getroffen - Danke


    Zwei Fragen habe ich aber dann doch noch...
    Wenn ich nun eine Datei verschieben will brauche ich
    2 Argumente... Kann aber das Argument "datei" bzw.
    txtfiles nicht nutzen... Was tun?

    Wie kann ich die Orte der zu suchenden Dateien per
    Textbox festlegen?
    Immer wenn ich statt C:/XY Textbox1.text eingebe
    sagt mir das Programm das der Pfad nicht stimmen würde

    "C:/Users/Timo/Desktop"
    bzw. auch schon mit \ versucht :/

    Viele Grüße

    Edit by der_Kurt:
    * Beiträge zusammengelegt *

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

    also soweit ich wei mussman schon ein korekten PFad an geben Z.B


    • If Not My.Computer.FileSystem.FileExists("Pfad") Then
    • das überprüft ob diese angfegebene datei exetriert
    • If My.Computer.FileSystem.FileExists("pfad") Then
    • wenn es exestiert
    • 'dan gibt es noch befehle zum copieren von dateien oder einfügen oder erstelen
    So ich hab es jetzt...
    Ich bekomme aber diesen Fehler:

    Der Vorgang konnte nicht abgeschlossen werden, da bereits ein Verzeichnis im Pfad C:/Users/Timo/Desktop/Projekte vorhanden ist.
    Mit diesem Code...

    VB.NET-Quellcode

    1. Dim txtfiles = From i In IO.Directory.GetFiles(TextBox1.Text, "*.txt") Select i
    2. For Each datei In txtfiles
    3. My.Computer.FileSystem.MoveFile(datei, TextBox2.Text)
    4. Next

    dabei soll er doch nur verschieben und keinen neuen Ordner erstellen! O.o
    Ich möchte die txt. ja nach Documents packen und in keinen Unterordner...

    Wenn ich nun "C:/Users/Timo/Desktop/lala eingebe dann ist eine Datei namens Datei da.
    Ich möchte aber die alte datei verschieben bzw. alle .txt verschieben...
    Hat da niemand eine Idee

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

    Dateien vom einem Ordner zu einem zu verschieben
    1. Alle zu verschiebene Dateien aus dem Quellordner in eine Liste/Array packen (IO.Directory.GetFiles)
    2. Geh die Liste eimal durch (For Each oder For index ...)
    2.a. Zielpfad aus Zielordner und Dateinamen zusammensetzen (IO.Path.Combine)
    2.b. Prüfen, ob Zieldatei bereits existiert (IO.File.Exists)
    2.c. Falls Zieldatei exisistiert: Was soll geschehen? Vorhandene Zieldatei löschen und Datei verschieben? oder einfach ignorieren?
    ...
    Jetzt habe ich folgenden Code:

    VB.NET-Quellcode

    1. For Each items As String In IO.Directory.GetFiles(TextBox1.Text)
    2. If Not IO.Path.GetExtension(items) = ".txt" Then
    3. IO.File.Move(items, TextBox2.Text)
    4. End If
    5. Next


    Wenn ich aber nun compile dann
    wird mir immer der Fehler gesagt das die Datei schon existieren würde
    was sie aber nicht tut

    Timtim schrieb:

    IO.File.Move(items, TextBox2.Text)

    ... das die Datei schon existieren würde
    was sie aber nicht tut


    Doch, tut sie!

    File.Move erwartet von dir einen Dateiname, der die Quelldatei darstellt, und einen kompletten Dateinamen, welcher das Ziel angibt. Wenn du die Move-Methode mit Textbox2.Text verwendest, hast du spätestens beim zweiten Durchlauf eine bereits existierende Datei.

    In deiner For-Each-Schleife hast du mit ...getfiles(..) die Auflistung deiner Dateien. 'Items' enthält den aktuellen Dateinamen. Extrahiere den Dateinamen, und setze ihn mit dem Zielpfad zusammen. (IO.Path.GetFileName, IO.Path.Combine)

    LG, der_Kurt:

    PS: Bitte keine PM! Wenn ich ein Problem sehe, und die Zeit dazu ist, dann helfe ich. PMs bewirken da eher das Gegenteil.
    AHH! Ich kriege Kopfschmerzen :S

    Ich habe diesen Fehler:
    Der Vorgang konnte nicht abgeschlossen werden, da bereits ein Verzeichnis im Pfad C:/Users/Timo/Music vorhanden ist.
    Mit diesem Code:

    VB.NET-Quellcode

    1. Dim txtfiles = From i In IO.Directory.GetFiles(TextBox1.Text, "*.txt") Select i
    2. For Each datei In txtfiles
    3. Label6.Text = datei
    4. My.Computer.FileSystem.CopyFile(Label6.Text, TextBox2.Text)
    5. Next

    Da ich nicht wusste wie ich an die Daten der DAtei komme habe ich sie
    vorerst in ein Label schreiben lassen...

    Jemand eine Idee wie ich das endlich ausgebügelt bekomme? :( ?(