Alle dateien mit selber endung löschen

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

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von asusdk.

    Alle dateien mit selber endung löschen

    VB.NET-Quellcode

    1. Private Sub Button24_Click(sender As Object, e As EventArgs) Handles Button24.Click
    2. Try
    3. For Each f In (Environment.GetFolderPath(Environment.SpecialFolder.Personal, "\My RoboForm Data\Default Profile\", "*.rtf"))
    4. File.Delete(f)
    5. Next
    6. Catch ex As UnauthorizedAccessException
    7. End Try
    8. End Sub


    Was habe ich hier falsch gemacht kann mich jemand aufklären?

    Ich möcht alle dateien mit endung .rtf Löschen

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

    Bei mir kommt kein Pfad raus, wenn ich Environment.GetFolderPath(Environment.SpecialFolder.Personal, "\My RoboForm Data\Default Profile\") verwende. Welcher kommt bei Dir raus? Der richtige?

    Gegenvorschlag:

    VB.NET-Quellcode

    1. Try
    2. Dim DirInfo As New DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "My RoboForm Data", "Default Profile"))
    3. For Each f In DirInfo.GetFiles
    4. If f.Extension = ".rtf" Then f.Delete()
    5. Next
    6. Catch ex As UnauthorizedAccessException
    7. End Try


    Ah, Moment. Never touch a running For-Loop. Korrektur kommt gleich.
    EDIT: Klappt doch, da andere Bindung.
    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.
    Geh mit dem Debugger durch den Code und schau dir den Inhalt von f an. Zudem überleg dir, was du bei Environment.GetFolderPath zurück bekommst. Dann schau dir die Überladungen von File.Delete() an und überlege, ob du das richtige an die Methode übergibst.

    Hab in meiner Signatur nen Link zu nem Artikel zum Thema debuggen. Das musst du drauf haben wenn du programmieren lernen möchtest.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Try
    3. For Each f As String In IO.Directory.EnumerateFiles(Environment.SpecialFolder.Personal.ToString & "\My RoboForm Data\Default Profile", "*.rtf", SearchOption.TopDirectoryOnly)
    4. File.Delete(f)
    5. Next
    6. Catch ex As UnauthorizedAccessException
    7. End Try
    8. End Sub

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    dann versuchs mal so :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Try
    3. For Each f As String In IO.Directory.EnumerateFiles(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\My RoboForm Data\Default Profile"), "*.rtf", SearchOption.TopDirectoryOnly)
    4. File.Delete(f)
    5. Next
    6. Catch ex As UnauthorizedAccessException
    7. End Try
    8. End Sub



    oder mit einer nicht ganz so langen und verschatelten Zeile :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim P As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    2. Dim P2 As String = "\My RoboForm Data\Default Profile"
    3. Dim CompletedPath As String = Path.Combine(P, P2)
    4. Try
    5. For Each f As String In IO.Directory.EnumerateFiles(CompletedPath, "*.rtf", SearchOption.TopDirectoryOnly)
    6. File.Delete(f)
    7. Next
    8. Catch ex As UnauthorizedAccessException
    9. End Try



    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

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

    oK, was das ?

    VB.NET-Quellcode

    1. Dim CompletedPath As String = Path.Combine(P & P2)


    ich glaub so ist es besser

    VB.NET-Quellcode

    1. Dim P2 As String = "My RoboForm Data\Default Profile"
    2. Dim CompletedPath As String = Path.Combine(P, P2)

    VB.NET-Quellcode

    1. 'Alt
    2. Dim P2 As String = "\My RoboForm Data\Default Profile"
    3. 'Neu
    4. Dim P2 As String = "My RoboForm Data\Default Profile"

    und

    VB.NET-Quellcode

    1. 'alt
    2. Dim CompletedPath As String = Path.Combine(P & P2)
    3. 'neu
    4. Dim CompletedPath As String = Path.Combine(P, P2)
    5. 'eig. sogar
    6. Dim CompletedPath As String = Path.Combine(P, "My RoboForm Data" , "Default Profile" )
    @bigbase tut mir leid zu hören,
    hatte es hier mit .txt dateien getestet (in einem eigens dafür erstellten Ordner auf dem desktop)
    da lief es ohne probleme


    Edit:

    so, grade noch einmal getestet, mit:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim P As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    3. Dim CompletedPath As String = Path.Combine(P, "My RoboForm Data", "Default Profile")
    4. Try
    5. For Each f As String In IO.Directory.EnumerateFiles(CompletedPath, "*.rtf", SearchOption.TopDirectoryOnly)
    6. File.Delete(f)
    7. Next
    8. Catch ex As UnauthorizedAccessException
    9. MessageBox.Show("uhhh, kein Zugriff !!!!!")
    10. End Try
    11. End Sub


    funktioniert es hier einwandfrei, auch im dokumente Ordner (extra deine Ordnerstruktur nachgebaut) und mit 895 .rtf dateien

    sollte es dennoch nicht gehen versuche mal Visual Studio als Admin zu starten, oder prüfe evtl nach ob einige der Dateien, schreibgeschütz sind

    Ideen am Ende :P

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

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