Mehrere Dateiendungen umbenennen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Rikudo.

    Mehrere Dateiendungen umbenennen

    Hallo,

    Ich will gerne alle Dateienendungen eines gewählten Ordners umbenennen und zwar mit der Endung die ich in einer TextBox eingebe.
    Mein Ansatz:

    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '
    3. Dim ofd As New OpenFileDialog ' DATEI WÄHLEN
    4. If ofd.ShowDialog = DialogResult.OK Then
    5. TextBoxPfad.Text = ofd.FileName
    6. End If
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. Dim type As String = TextBoxFileExtension.Text
    10. Try
    11. Dim oldFile As String = Mid(TextBoxPfad.Text, 1, Len(TextBoxPfad.Text) - 4)
    12. FileCopy(TextBoxPfad.Text, oldFile + type)
    13. System.IO.File.Delete(TextBoxPfad.Text) 'Datei Umbenennen
    14. MsgBox(TextBoxPfad.Text + " is changed into a " + type + " file.")
    15. Catch ex As Exception
    16. MsgBox("wählen sie zuerst eine Datei")
    17. End Try
    18. End Sub
    19. End Class

    Das funktioniert auch prima, aber nur für eine Datei.
    Ich würde aber gerne alle Endungen in dem Verzeichnis umbennen.
    Kann mir jemand helfen, ich komm da nicht weiter.

    Bin dankbar für jeden Vorschlag ;)

    Lg
    Rikudo
    C# Developer
    Learning C++
    Da musste mit For Each alle Dateien Deines Verzeichnisses durchlaufen.

    VB.NET-Quellcode

    1. For Each fi In New System.IO.DirectoryInfo("C:\Temp").GetFiles("*.*")
    2. ' mit fi umbenennen
    3. 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!
    Okay, funktioniert vom Prinzip schon, aber ich will ja keine Datei bestimmte Datei wählen sondern einen Ordner..
    Weil momentan kommt nachdem er die erste erfolgreich umbenannt hat wieder die meldung: "Wähle ein Datei"


    Edit by Manschula: Warum voll zitieren, wenn das Original direkt über dir steht? --> Unnötiges Vollzitat entfernt!
    C# Developer
    Learning C++

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

    Hey,

    in dem von @RodFromGermany: geschriebenen Beispiel wird keine bestimmte Datei ausgewählt, sondern alle Dateien im Ordner "C:\Temp"; lege die neue Dateiendung also vor deiner "For-Each"-Schleife fest und wende die Operation dann, wie im Beispiel, allgemein für alle Dateien an.

    Gruß Manschula
    Hast du dir das so vorgestellt?

    VB.NET-Quellcode

    1. TextBox1.Text = ".ext"
    2. Using ofd As New OpenFileDialog
    3. ofd.Multiselect = True
    4. If ofd.ShowDialog <> Windows.Forms.DialogResult.OK Then
    5. Return
    6. End If
    7. For Each oldfilename In ofd.FileNames
    8. Dim oldextension As String = oldfilename.Substring(oldfilename.LastIndexOf("."))
    9. Dim newfilename As String = oldfilename.Replace(oldextension, TextBox1.Text)
    10. IO.File.Move(oldfilename, newfilename)
    11. Next
    12. End Using