Dateinamen von Fotos automatisch um Datum ergänzen

Sie sammeln alle digitalen Fotos als JPEG-Dateien gezielt in einem Ordner auf
Ihrem Rechner. Um die Dateien einfacher sortieren zu können und einen chronologischen Überblick über Ihre Fotos zu behalten, möchten Sie den Dateinamen nachträglich möglichst einfach das Aufnahmedatum voranstellen.

Mit dem Windows Scripting Host und VBScript erledigen Sie diese Aufgabe automatisch. Geben Sie den Quelltext in einen beliebigen Texteditor ein und speichern Sie ihn als UMBENENNENFOTOS.VBS. Sie finden die Datei auch auf der Heft-DVD unter CHIP-Code Praxis11.

Option Explicit

Dim listArgs
Dim objFileSystem, objFolder, objFile
Dim szFolder, szDateCreated, szYear, szMonth, szDay
Set listArgs = WScript.Arguments
If listArgs.Count = 0 Then
szFolder = InputBox("Welcher Ordner?","Ordner auswählen","C:\Daten\Alex\Fotos")
Else
szFolder = listArgs(0)
End If
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If objFileSystem.FolderExists(szFolder) Then
Set objFolder = objFileSystem.GetFolder(szFolder)
For Each objFile In objFolder.Files
If objFile.Type = "JPEG-Bild" Then
szDateCreated = objFile.DateCreated
szYear = Year(szDateCreated)
szMonth = Month(szDateCreated)
szDay = Day(szDateCreated)
If isDate(szDateCreated) Then
szYear = Year(szDateCreated)
szMonth = Month(szDateCreated)
szDay = Day(szDateCreated)
If szMonth < 10 Then
szMonth = "0" & szMonth
End If
If szDay < 10 Then
szDay = "0" & szDay
End If
szDateCreated = szYear & szMonth & szDay
If szDateCreated <> left(objFile.Name, 8) Then
objFile.Name = szDateCreated & " " & objFile.Name
End If
End If
End If
Else
MsgBox "Angegebener Ordner existiert nicht!"
End If
Nach dem Start fragt das Skript nach dem Pfad zu Ihrem Foto-Ordner und schreibt ihn in die Variable »szFolder«. Im Beispiel zeigt es den Pfad »C:\Daten\Alex\Fotos« als Voreinstellung. Mit dieser Information erzeugt das Skript das Objekt »objFileSystem« vom Typ »Scripting.FileSystemObject«.

In einer »For Each«-Schleife bearbeitet es dann nacheinander alle in diesem Ordner enthaltenen Dateien »objFile«, wenn die Eigenschaft »Type« der jeweiligen Datei den Eintrag »JPEG-Bild« enthält. Das Skript extrahiert aus der Eigenschaft »objFile.DateCreated« für das Dateidatum die Daten Jahr, Monat und Tag und schreibt sie in die Variablen »szYear«, »szMonth« und »szDay«. Einstelligen Tages- oder Monatsangaben stellt es jeweils eine »0« voran.

Aus diesen Daten bildet es den Wert »szDateCreated« nach dem Muster »JJJJMMTT«. Zuletzt prüft das Skript, ob die ersten acht Stellen des Dateinamens bereits »szDateCreated« entsprechen. Wenn diese Prüfung negativ ausfällt, benennt das Skript die bearbeitete Datei mit dem Befehl »objFile.Name = szDateCreated & " " & objFile.Name« um.