Platzhalter für alle Namen von Ordner & co ?!

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Platzhalter für alle Namen von Ordner & co ?!

    Hallo !
    ich habe mal wieder eine Frage :D

    undzwar...

    möchte ich alle .ink auf meinem Desktop löschen... gibt es für die Namen der Verknüpfungen einen Platzhalter ? sowas wie "*.*")



    VB.NET-Quellcode

    1. My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.Desktop & "\*.ink")
    Moin,

    ich kenne zwar keine .ink Dateien, aber egal. Meinst du vielleicht .lnk (.LNK)? Zur Frage: Liste dir doch alle Dateien auf, da kannst du Platzhalter angeben. Dann eine For-Schleife, Datei für Datei löschen und gut is. BTW: Nimm bitte den System.IO-Namespace anstatt My! [VB.NET] System.IO Namespace richtig nutzen
    Mit freundlichen Grüßen,
    Thunderbolt

    VB.NET-Quellcode

    1. Dim targetDirectroy As New IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
    2. For Each file As IO.FileInfo In targetDirectroy.GetFiles()
    3. If file.Extension.Equals(".lnk") Then
    4. MsgBox(file.Name)
    5. 'file.Delete()
    6. End If
    7. Next


    Hier sind mir gleich ein paar Probleme aufgefallen: erstmal kann man .GetFiles() keinen passenden Filter mitgeben (z.B. "*.lnk") weil die Dinger oft LNK/Lnk/lnk heißen und dann nicht erkannt werden - mit der if-Abfrage klappt es aber. Außerdem scheint es unter Windows 7 so zu sein, dass einige Dateien zwar auf dem Desktop angezeigt werden aber nicht im Desktop-Verzeichnis liegen. Wie man an diese rankommt weiß ich nicht...
    @FreakJNS: Es gibt auch noch Enviroment.SpecialFolders.DesktopDirectory
    The directory used to physically store file objects on the desktop.

    Do not confuse this directory with the desktop folder itself, which is a virtual folder.


    Edit: Zu langsam :pinch:
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...
    ich habe jetzt eine Auflistung hinbekommen...
    nur wie kann ich diese Dateien jetzt alle Automatisch löschen ?(

    VB.NET-Quellcode

    1. Try
    2. For Each Dateien_Desktop As String In My.Computer.FileSystem.GetFiles(
    3. My.Computer.FileSystem.SpecialDirectories.Desktop)
    4. ListBox1.Items.Add(Dateien_Desktop)
    5. Next
    6. Catch ex As Exception
    7. Catch ex As Exception
    8. MsgBox(ex.Message, MsgBoxStyle.Critical, "Achtung")
    9. End Try
    10. End Sub
    @Janiiix3
    Kannst du nicht mal Copy and Paste benutzen, oder was? Der Code steht in Post 3.

    @FreakJNS
    Hast du schon mal in den Eigenschaften den Pfad angeschaut? Weil irgendwo muss es ja liegen, auch wenn ich solches Verhalten noch nie gesehen habe.
    in meinem Code habe ich noch was vergessen, es müsste

    VB.NET-Quellcode

    1. If file.Extension.Equals(".lnk", StringComparison.OrdinalIgnoreCase) Then

    heißen.

    Adde die gefundenen Dateien einfach in eine List(of FileInfo) und binde diese mit Listbox1.DataSource=deineListe an die ListBox (natürlich nur, wenn du die Dateien auch anzeigen möchtest, zum löschen selbst brauchst du das nicht). Dafür reicht ein fileInfo.delete() (siehe auskommentierte Zeile)

    @Artentus
    @timmi31061
    Stimmt, da hätte ich auch vorher drauf kommen können: C:\Users\Public\Desktop
    Im Setup kann man ja auch oft wählen "für alle installieren oder nur für den aktuellen Nutzer?"
    okay danke das klappt!
    nun möchte ich aber div. Dateien löschen (.exe / .pdf / .txt)

    da ist das mit der Auflistung garnicht schlecht ....

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. For Each Desktop_Dateien As String In My.Computer.FileSystem.GetFiles(
    3. My.Computer.FileSystem.SpecialDirectories.Desktop)
    4. ListBox1.Items.Add(Desktop_Dateien)
    5. FileInfo.Delete()
    6. Next
    7. End Sub
    8. End Class


    wie bekomme ich diese dann mit einem klick gelöscht ???
    Vollzitat entfernt

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

    HALLO?!?!?!

    Warum verwendest du immer noch MY.*???
    Es wurde schon gesagt:

    VB.NET-Quellcode

    1. Dim targetDirectroy As New IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
    2. For Each file As IO.FileInfo In targetDirectroy.GetFiles()
    3. If file.Extension.Equals(".lnk", StringComparison.OrdinalIgnoreCase) Then MsgBox(file.Name)
    4. 'file.Delete()
    5. End If
    6. Next


    Bedank dich jetzt bei @FreakJNS:
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...
    Aber echt ;(

    Wenn du mehrere Typen 'abfangen' willst erstelle eine Liste/Array dieser Extensions:

    VB.NET-Quellcode

    1. Dim targetExtensions() As String = {".doc", ".jpg", ".exe"}
    2. 'oder
    3. Dim targetExtensions as new List(of String)
    4. targetExtensions.add(...)
    5. targetExtensions.add(...)


    in der Schleife (=> For Each file As IO.FileInfo In targetDirectroy.GetFiles(), kein Unfug mit dem MyNamespace!) guckst du dann einfach ob file.Extension.toLower (toLower weil die Dinger auch .eXe oder .DOc heißen könnten) in der Liste/dem Array drin ist - und zwar mit der .Contains-Methode.
    Wenn ja, dann handelt es sich um eine Datei, die gelöscht werden soll. Wie das geht steht ja bereits in Post#3 in der auskommentieren Zeile^^

    Und nur zur Sicherheit: Schalte Option Strict On (ganz oben als aller erste Zeile schreiben)!

    FreakJNS schrieb:

    oder

    VB.NET-Quellcode

    1. Dim targetExtensions As New List(Of String) From {".doc", ".jpg", ".exe"}
    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!