vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Dateien umbenennen 
Autor: stefanbla80
Datum: 25.06.14 05:02

Hallo zusammen,

das war wohl ein Fehler meinerseits.

Public Class FileRenamer
 
#Region " Deklarationen - Felder "
 
    Private pDifferExtensions As Boolean
    Private pFiles As List(Of IO.FileInfo)
    Private pPattern As String
    Private pPatternVars As New Dictionary(Of String, PatternVarReplacer)
    Private pStartValue As Integer
 
#End Region
 
#Region " Deklarationen - Delegates/Events "
 
    Public Delegate Function PatternVarReplacer(ByVal file As IO.FileInfo, _
      ByVal i As Integer) As String
 
#End Region
 
#Region " Konstruktoren "
 
    Public Sub New(ByVal files As IEnumerable(Of IO.FileInfo))
        Me.New(files, "?i", 1)
    End Sub
 
    Public Sub New(ByVal files As IEnumerable(Of IO.FileInfo), ByVal pattern As _
      String)
        Me.New(files, pattern, 1)
    End Sub
 
     Public Sub New(ByVal files As IEnumerable(Of IO.FileInfo), ByVal pattern _
       As String, _
                   ByVal startValue As Integer)
        pFiles = New List(Of IO.FileInfo)
        pFiles.AddRange(files)
 
        pPattern = pattern
        pStartValue = startValue
 
        pPatternVars.Add("?i", AddressOf GetCounter)
    End Sub
 
#End Region
 
#Region " Eigenschaften "
 
    Public Property DifferExtensions() As Boolean
        Get
            Return pDifferExtensions
        End Get
        Set(ByVal value As Boolean)
            pDifferExtensions = value
        End Set
    End Property
 
    Public ReadOnly Property Files() As List(Of IO.FileInfo)
        Get
            Return pFiles
        End Get
    End Property
 
    Default Public ReadOnly Property Name(ByVal index As Integer) As String
        Get
            Return pFiles(index).Name
        End Get
    End Property
 
    Public Property Pattern() As String
        Get
            Return pPattern
        End Get
        Set(ByVal value As String)
            pPattern = value
        End Set
    End Property
 
    Public ReadOnly Property PatternVariables() As Dictionary(Of String, _
      PatternVarReplacer)
        Get
            Return pPatternVars
        End Get
    End Property
 
    Public Property StartValue() As Integer
        Get
            Return pStartValue
        End Get
        Set(ByVal value As Integer)
            pStartValue = value
        End Set
    End Property
 
#End Region
 
#Region " Methoden - Function "
 
    Private Function GetCounter(ByVal file As IO.FileInfo, ByVal i As Integer) _
      As String
        Return i.ToString("0000")
    End Function
 
    Private Function GetFileName(ByVal file As IO.FileInfo, ByVal counter As _
      Integer) As String
        Dim name As String = Pattern
 
        ' Iteriere durch jede Variable
        For Each var In pPatternVars
            ' Delegaten dynamisch aufrufen und entsprechende Zeichenkette 
            ' ersetzen
            name = name.Replace(var.Key, CStr(var.Value.DynamicInvoke(file, _
              counter)))
        Next
 
        Return name & file.Extension
    End Function
 
#End Region
 
#Region " Methoden - Sub "
 
     Public Sub Rename()
        Dim counter As New Dictionary(Of String, Integer)
        Dim extension As String
        Dim newPath As String
        Dim newName As String
 
        Try
            ' Iteriere durch jede Datei
            For Each file In Files
                ' Die Dateierweiterung für die Nummerierung
                extension = If(DifferExtensions, file.Extension, "*")
 
                ' Falls Dateierweiterung noch nicht enthalten, füge diese dem 
                ' Dictionary hinzu
                If Not counter.ContainsKey(extension) Then
                    counter.Add(extension, StartValue)
                End If
 
                ' Ermittle den neuen Dateipfad und Dateiname
                newPath = IO.Path.GetDirectoryName(file.FullName)
                newName = GetFileName(file, counter(extension))
 
                ' Falls neue Datei nicht existiert, dann benenne diese um
                If Not IO.File.Exists(IO.Path.Combine(newPath, newName)) Then
                    file.MoveTo(IO.Path.Combine(newPath, newName))
                End If
 
                ' Zähler für Nummerierung um 1 erhöhen
                counter(extension) += 1
            Next
 
        Catch ex As Exception
            ' Eventuelle Fehler abfangen
            Debug.WriteLine(ex.Message)
        End Try
    End Sub
 
#End Region
Könnt Ihr damit was anfangen?!

Grüße
Stefan
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dateien umbenennen1.951stefanbla8024.06.14 10:26
Re: Dateien umbenennen1.435ErfinderDesRades24.06.14 11:53
Re: Dateien umbenennen1.274Kuno6024.06.14 14:59
Re: Dateien umbenennen1.357stefanbla8025.06.14 05:02
Re: Dateien umbenennen1.257ErfinderDesRades25.06.14 10:18
Re: Dateien umbenennen1.371effeff25.06.14 11:31
Re: Dateien umbenennen1.324GPM25.06.14 16:27

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel