Bei eingeschalteter Voransicht kann so komfortabel jedes einzelne Bild in einem Ordner betrachtet und mit sinnvollem Namen versehen werden. Der Schalter funktioniert auch im Flatview-Modus.
Funktion:
Der Schalter prüft zunächst, ob in den Metadaten der ersten ausgewählten Datei das Aufnahmedatum vorhanden ist. Ist dies nicht der Fall, öffnet sich eine Dialogbox, in der das Aufnahmedatum auf das Erstellungsdatum der Datei, das Datum der letzten Änderung oder das aktuelle Datum gesetzt werden kann. In einem Textfeld kann außerdem ein eigenes Datum mit Uhrzeit eingegeben werden (im Format YYYYMMDD HHMMSS).
Ist ein Aufnahmedatum vorhanden (oder im ersten Dialog gesetzt worden) öffnet sich für die erste markierte Datei eine Dialogbox, in der ein neuer Name eingegeben werden kann. Dem neuen Namen wird das Aufnahmedatum vorangestellt. Der resultierende Name lautet dann [Aufnahmedatum]_[Dialogbox-Eingabe].[Erweiterung]. Nachdem die Dialogbox mit OK abgeklickt wurde, wird die nächste Datei ausgewählt und (ggfs. nach Setzen des Aufnahmedatums in der ersten Dialogbox) eine Dialogbox für sie geöffnet, in der nun die letzte Eingabe als Vorgabe eingetragen ist. Alle Dateien in einem Ordner können so nacheinander umbenannt und mit individuellen Namen versehen werden. Dateien, die nicht umbenannt werden sollen, können übersprungen werden. Die Auswahl wird in einer unendlichen Schleife fortgesetzt, bis in der Dialogbox auf Abbrechen geklickt wird.
Der Umbenennen-Befehl und damit das Namens- und Datumsformat kann in Zeile 50 (Zeile 55 inder XML-Version) nach Wunsch editiert werden.
Beispiel:
Alter Dateiname: DC10027.jpg
Dialogbox-Eingabe: Bernd trinkt Bier
Neuer Dateiname: 2014-08-03 11;17;56_Bernd trinkt Bier.jpg
Bei der nächsten Datei wäre der Text Bernd trinkt Bier in der Dialogbox bereits vor-eingetragen, damit mehrere Bilder mit gleicher Beschreibung, aber unterschiedlichen Aufnahmedaten benannt werden können.
Bilder sukzessive umbenennen (Skriptfunktion)
Code: Alles auswählen
Function OnClick(ClickData)
DOpus.vars.Set "last", ""
ClickData.Func.Command.ClearFiles
ClickData.Func.Command.AddFile ClickData.func.command.sourcetab.selected(0)
Call Checkdate(ClickData)
End Function
Sub Checkdate(ClickData)
If ClickData.func.command.sourcetab.selected(0).Metadata.image.datetaken = "" Then
Set dlg = ClickData.Func.Dlg
dlg.title = "Aufnahmedatum fehlt!"
dlg.message = "Aufnahmedatum eingeben im Format: YYYYMMDD HHMMSS"
dlg.max = 19
dlg.buttons = "OK|Erstellt|Geändert|Aktuell|Abbrechen"
i = dlg.show
If i = 1 Then
ClickData.Func.Command.RunCommand("SetAttr META " & """" & "datetaken:" & dlg.input & """")
End If
If i = 2 Then
ClickData.Func.Command.RunCommand("SetAttr META datetaken:createdate")
End If
If i = 3 Then
ClickData.Func.Command.RunCommand("SetAttr META datetaken:modifydate")
End If
If i = 4 Then
ClickData.Func.Command.RunCommand("SetAttr META " & """" & "datetaken:" & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & " " & Time & """")
End If
End If
ClickData.Func.Command.RunCommand("Go Refresh")
ClickData.Func.Command.RunCommand("Select {file} EXACT DESELECTNOMATCH")
Call Edit(ClickData)
End Sub
Sub Edit(ClickData)
Set dlg = ClickData.Func.Dlg
dlg.message = "Bildbeschreibung eingeben:"
dlg.title = "Bilder umbenennen"
dlg.buttons = "OK|Überspringen|Abbrechen"
dlg.max = 512
dlg.default = DOpus.vars.Get("last")
i = dlg.show
DOpus.vars.Set "last", dlg.Input
If i = 1 Then
ClickData.Func.Command.RunCommand("Select NEXT")
ClickData.Func.Command.RunCommand("Rename FILEINFO CASE=extlower PATTERN=" & """" & "*.*" & """" & " TO=" & """" & "{shootingtime|D#yyyy-MM-dd} {shootingtime|T#HH;mm;ss}_" & dlg.Input & ".{ext}" & """")
Call EditNext(ClickData)
End If
If i = 2 Then
ClickData.Func.Command.RunCommand("Select NEXT")
Call EditNext(ClickData)
End If
If i = 0 Then
Exit Sub
End If
End Sub
Sub EditNext(ClickData)
ClickData.Func.Command.ClearFiles
ClickData.func.command.sourcetab.Update
For Each item In ClickData.func.command.sourcetab.selected
If item.selected = True Then
ClickData.Func.Command.Addfile item
End If
Next
Call Checkdate(ClickData)
End Sub
Code: Alles auswählen
<?xml version="1.0"?>
<button backcol="none" display="both" textcol="none">
<label>Bilder sukzessive umbenennen</label>
<icon1>#rename2</icon1>
<function type="script">
<instruction>Function OnClick(ClickData)</instruction>
<instruction> DOpus.vars.Set "last", ""</instruction>
<instruction> ClickData.Func.Command.ClearFiles</instruction>
<instruction> ClickData.Func.Command.AddFile ClickData.func.command.sourcetab.selected(0)</instruction>
<instruction> Call Checkdate(ClickData)</instruction>
<instruction>End Function</instruction>
<instruction />
<instruction>Sub Checkdate(ClickData)</instruction>
<instruction> If ClickData.func.command.sourcetab.selected(0).Metadata.image.datetaken = "" Then</instruction>
<instruction> Set dlg = ClickData.Func.Dlg</instruction>
<instruction> dlg.title = "Aufnahmedatum fehlt!"</instruction>
<instruction> dlg.message = "Aufnahmedatum eingeben im Format: YYYYMMDD HHMMSS"</instruction>
<instruction> dlg.max = 19</instruction>
<instruction> dlg.buttons = "OK|Erstellt|Geändert|Aktuell|Abbrechen"</instruction>
<instruction> i = dlg.show</instruction>
<instruction />
<instruction> If i = 1 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("SetAttr META " & """" & "datetaken:" & dlg.input & """")</instruction>
<instruction> End If</instruction>
<instruction> </instruction>
<instruction> If i = 2 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("SetAttr META datetaken:createdate") </instruction>
<instruction> End If</instruction>
<instruction />
<instruction> If i = 3 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("SetAttr META datetaken:modifydate") </instruction>
<instruction> End If</instruction>
<instruction />
<instruction> If i = 4 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("SetAttr META " & """" & "datetaken:" & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & " " & Time & """") </instruction>
<instruction> End If</instruction>
<instruction> End If</instruction>
<instruction> ClickData.Func.Command.RunCommand("Go Refresh")</instruction>
<instruction> ClickData.Func.Command.RunCommand("Select {file} EXACT DESELECTNOMATCH")</instruction>
<instruction> Call Edit(ClickData)</instruction>
<instruction>End Sub</instruction>
<instruction />
<instruction>Sub Edit(ClickData)</instruction>
<instruction> Set dlg = ClickData.Func.Dlg</instruction>
<instruction> dlg.message = "Bildbeschreibung eingeben:"</instruction>
<instruction> dlg.title = "Bilder umbenennen"</instruction>
<instruction> dlg.buttons = "OK|Überspringen|Abbrechen"</instruction>
<instruction> dlg.max = 512</instruction>
<instruction> dlg.default = DOpus.vars.Get("last")</instruction>
<instruction> i = dlg.show</instruction>
<instruction> DOpus.vars.Set "last", dlg.Input</instruction>
<instruction />
<instruction> If i = 1 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("Select NEXT")</instruction>
<instruction> ClickData.Func.Command.RunCommand("Rename FILEINFO CASE=extlower PATTERN=" & """" & "*.*" & """" & " TO=" & """" & "{shootingtime|D#yyyy-MM-dd} {shootingtime|T#HH;mm;ss}_" & dlg.Input & ".{ext}" & """")</instruction>
<instruction> Call EditNext(ClickData)</instruction>
<instruction> End If</instruction>
<instruction> </instruction>
<instruction> If i = 2 Then</instruction>
<instruction> ClickData.Func.Command.RunCommand("Select NEXT")</instruction>
<instruction> Call EditNext(ClickData)</instruction>
<instruction> End If</instruction>
<instruction> </instruction>
<instruction> If i = 0 Then</instruction>
<instruction> Exit Sub</instruction>
<instruction> End If</instruction>
<instruction>End Sub</instruction>
<instruction />
<instruction>Sub EditNext(ClickData)</instruction>
<instruction> ClickData.Func.Command.ClearFiles</instruction>
<instruction> ClickData.func.command.sourcetab.Update</instruction>
<instruction> For Each item In ClickData.func.command.sourcetab.selected</instruction>
<instruction> If item.selected = True Then</instruction>
<instruction> ClickData.Func.Command.Addfile item</instruction>
<instruction> End If</instruction>
<instruction> Next</instruction>
<instruction> Call Checkdate(ClickData)</instruction>
<instruction>End Sub</instruction>
</function>
</button>