Unbekannte Zeichen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von hyperlinx.

    Unbekannte Zeichen

    Moin moin...

    Wie kann ich hier die Variable "version" durch eine beliebige Zeichenfolge ersetzen?

    VB.NET-Quellcode

    1. Dim version As String = "00.01.00"
    2. If My.Computer.FileSystem.FileExists(usbDriveLetter & "ubuntu-" & version & ".img.raw") Then
    3. My.Computer.FileSystem.DeleteFile(usbDriveLetter & "ubuntu-" & version & ".img.raw")
    4. End If


    Dies funktioniert leider nicht:

    VB.NET-Quellcode

    1. 'Dim version As String = "00.01.00" <-- * sollte alle möglichen Zeichen beinhalten
    2. If My.Computer.FileSystem.FileExists(usbDriveLetter & "ubuntu-*.img.raw") Then
    3. My.Computer.FileSystem.DeleteFile(usbDriveLetter & "ubuntu-*.img.raw")
    4. End If

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

    mir fällt ne unschöne variante ein:
    - Liste dir alle Dateinamen des Verzeichnisses in ein Array auf
    - Prüfe 2x mit .Contains ob der String am Anfang und am Ende vorhanden ist (praktisch das in der mitte ist dann egal)

    wie gesagt unschöne Variante aber sollte funken ;)

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

    Klar kannst du die Variable durch eine Zeichenfolge ersetzen.
    In deinem Beispiel ist aber ein "*" im Dateinamen enthalten.
    Aus diesem Grund kann die Datei nicht gelöscht werden, dass Zeichen ist in einem Dateinamen unzulässig.

    Gruß, PiasSoft :)
    Danke für die schnellen Antworten!

    Da ich von der Linux Branche kommen und ich bei den Bash-Skripts durch eine simples:

    Quellcode

    1. rm *.irgendwas

    verwöhnt worden bin, suche ich nach einer einfacheren Lösung als die von fichz beschriebene Variante.
    Wenn ich das nun richtig verstanden habe, möchtest du die Datei ja löschen.
    Wenn du eine Zeichenfolge in Version reinschreibst löscht der diese ja wenn vorhanden.

    Wenn du als Zeichen "*" eingibst, muss dein Programm alle Dateien löschen welche mit "Ubuntu-" beginnen.
    Du kannst dort nicht die Datei "Ubuntu-*.irgendwas" löschen.
    Dabei musst du jede einzelne Datei auf den Anfang "ubuntu-" überprüfen und dann einzeln löschen.
    Also erstmal vor dem löschen den Inhalt von "version" überprüfen und dann halt nen extra Zweig machen wenn Version="*" ist.
    Danke für deine Antwort Fillure

    Leider muss ich gestehen das deine Antwort keinerlei Hilfe für mein Problem darstellt. Könntest du dies nochmals und ausführlicher, evnt. mit einem Codeschnippels unterstreichen?

    Als Antwort auf deine Feststellung:

    Wenn ich das nun richtig verstanden habe, möchtest du die Datei ja löschen.

    gebe ich die ein "Ja" ich möchte alles Löschen was sich in diesem Verzeichnis befindet und die Zeichen "ubuntu-${*}.img.raw" beinhaltet.
    gut dann versuch ich dir das in einem kleinen Codebeispiel darzustellen wie ich das meinte:

    VB.NET-Quellcode

    1. Dim version As String = "00.01.00"
    2. if version <> "*" then
    3. If My.Computer.FileSystem.FileExists(usbDriveLetter & "ubuntu-" & version & ".img.raw") Then
    4. My.Computer.FileSystem.DeleteFile(usbDriveLetter & "ubuntu-" & version & ".img.raw")
    5. End If
    6. else
    7. Dim files As System.Collections.ObjectModel.ReadOnlyCollection(Of String)
    8. files = My.Computer.FileSystem.FindInFiles(usbDriveLetter, "Ubuntu-", True, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly)
    9. For Each item In files
    10. My.Computer.FileSystem.DeleteFile(usbDriveLetter & item)
    11. Next
    12. end if


    ich denke mal so sollte es funktionieren, solange in usbdriveletter der Pfad drin steht, wovon ich mal ausgegangen bin.

    also wenn du "*" eingibst dann läuft der alle Dateien im angegebenen Verzeichnis durch und schreibt alle in die StringCollection. Wobei ich das eingschränkt habe auf TopLevelOnly also ohne die Unterordner zu durchforsten. Danach löscht der alle Dateien in files.