Hallo zusammen,
ich würde gerne Bilder in einem bestimmten Ordner umbenennen - das ganze chronologisch.
Mein bisheriger Code hierfür:
Public Class Form_Rename
Private Sub Form_Rename_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Module_Voreinstellungen.Vorbelegungen()
End Sub
Private Sub Button_ok_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button_ok.Click
Dim rename As New FileRenamer(New IO.DirectoryInfo( _
Me.ComboBox_Laufwerk.Text).GetFiles)
rename.PatternVariables.Add("?md5", AddressOf GetMD5Hash)
rename.PatternVariables.Add("?MD5", AddressOf GetMD5HashUpper)
rename.PatternVariables.Add("?old", AddressOf GetOldName)
rename.PatternVariables.Add("?OLD", AddressOf GetOldNameUpper)
rename.PatternVariables.Add("?size", AddressOf GetSize)
rename.DifferExtensions = True
rename.Pattern = ComboBox_Benennung.Text & "-?i"
rename.Rename()
If System.IO.Directory.Exists(Me.ComboBox_Laufwerk.Text) Then
Shell("explorer /e," & Me.ComboBox_Laufwerk.Text, vbMaximizedFocus)
End If
Me.Close()
End Sub
Private Sub Button_Pfad_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button_Pfad.Click
If System.IO.Directory.Exists(Me.ComboBox_Laufwerk.Text) Then
Shell("explorer /e," & Me.ComboBox_Laufwerk.Text, vbMaximizedFocus)
End If
End Sub
Private Sub Button_beenden_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button_beenden.Click
Me.Close()
End Sub
Private Sub ComboBox_Laufwerk_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles ComboBox_Laufwerk.Click
FolderBrowserDialog1.SelectedPath = Me.ComboBox_Laufwerk.Text
If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.ComboBox_Laufwerk.Text = FolderBrowserDialog1.SelectedPath
End If
End Sub
Private Function CalculateMD5Hash(ByVal fileName As String) As String
If Not System.IO.File.Exists(fileName) Then Return ""
Dim md5Hasher As System.Security.Cryptography.MD5 = _
System.Security.Cryptography.MD5.Create()
Dim sBuilder As New System.Text.StringBuilder
Dim data() As Byte
Using stream As New System.IO.FileStream(fileName, _
System.IO.FileMode.Open)
data = md5Hasher.ComputeHash(stream)
End Using
For i As Integer = 0 To data.Length - 1
sBuilder.Append(data(i).ToString("x2"))
Next
Return sBuilder.ToString
End Function
Private Function GetMD5Hash(ByVal file As IO.FileInfo, ByVal i As Integer) _
As String
Return CalculateMD5Hash(file.FullName)
End Function
Private Function GetMD5HashUpper(ByVal file As IO.FileInfo, ByVal i As _
Integer) As String
Return CalculateMD5Hash(file.FullName).ToUpper
End Function
Private Function GetOldName(ByVal file As IO.FileInfo, ByVal i As Integer) _
As String
Return IO.Path.GetFileNameWithoutExtension(file.FullName)
End Function
Private Function GetOldNameUpper(ByVal file As IO.FileInfo, ByVal i As _
Integer) As String
Return IO.Path.GetFileNameWithoutExtension(file.FullName).ToUpper()
End Function
Private Function GetSize(ByVal file As IO.FileInfo, ByVal i As Integer) As _
String
Return file.Length.ToString
End Function
End ClassJedoch kann ich nicht nach dem Aufnahmedatum sortieren. Habt Ihr eine Idee wie das geht?!
Grüße
Stefan |