Hello guys,
i'm currently very lost, because of no brain for learning scripting for DOpus. So i ask first Gemini. Result looks nice, but dont work. So i think i will ask peoples with knowledge instead ![]()
My Problem: My Girlfriend using an app for taking foto what dont create exif data.
This app is naming the file like YYYY-MM-DD HH-mm-ss.jpg.
My intention is to create an script that change the create date and taken date to the informations of filename.
Gemini gave me this code
// Typ: JScript
function OnClick(clickData) {
// 1. Zugriff auf die ausgewählten Dateien im Quell-Tab
var selectedFiles = clickData.func.sourcetab.selected_files;
var DOpus = clickData.func.command.DOpus;
// Regulärer Ausdruck, um das Datum und die Uhrzeit zu extrahieren
// Muster: YYYY-MM-TT HH-MM-SS
var regex = /^(\d{4})-(\d{2})-(\d{2}) (\d{2})-(\d{2})-(\d{2})\./;
// 2. Iteration über alle ausgewählten Dateien
for (var eSel = new Enumerator(selectedFiles); !eSel.atEnd(); eSel.moveNext()) {
var item = eSel.item();
var fileName = item.name;
var match = fileName.match(regex);
if (match) {
var year = parseInt(match[1], 10);
var month = parseInt(match[2], 10) - 1; // Monat ist 0-basiert (JScript 0-11)
var day = parseInt(match[3], 10);
var hour = parseInt(match[4], 10);
var minute = parseInt(match[5], 10);
var second = parseInt(match[6], 10);
// Neues JavaScript Date-Objekt erstellen
var newDate = new Date(year, month, day, hour, minute, second);
// Überprüfung auf gültiges Datum
if (isNaN(newDate)) {
DOpus.Output("Fehler: Konnte Datum aus dem Dateinamen nicht erstellen: " + fileName);
continue;
}
DOpus.Output("Verarbeite: " + fileName + " -> Datum: " + newDate.toLocaleString());
// 3. DOpus-Befehl zum Setzen der Datumsangaben erstellen
// Wichtig: Wir verwenden den internen SetAttr-Befehl, da dieser zuverlässiger
// mit den DOpus-Funktionen zusammenarbeitet.
var cmd = DOpus.Create.Command();
cmd.AddFile(item); // Füge die aktuelle Datei zum Befehl hinzu
// Konvertiere das JS Date-Objekt in das von SetAttr benötigte Format (YYYYMMTT.HHMMSS)
// Beachte, dass Date-Methoden wie getFullYear() die lokalen Zeitzonen verwenden.
var dateStr = match[1] + match[2] + match[3] + "." + match[4] + match[5] + match[6];
// Setze Änderungsdatum und Erstellungsdatum
// Da DOpus DateTaken (EXIF) nicht direkt per SetAttr im Skript unterstützt,
// setzen wir nur die System-Zeitstempel.
cmd.RunCommand('SetAttr MODIFIED="' + dateStr + '" CREATED="' + dateStr + '"');
DOpus.Output("Erfolg: Zeitstempel aktualisiert.");
} else {
DOpus.Output("Warnung: Dateiname entspricht nicht dem Muster 'YYYY-MM-TT HH-MM-SS.xxx': " + fileName);
}
}
}
on my first eye it looks good, but dopus means "no way" - Error in line 29, Position 13 (RAW-Linie 30)
-> Die Eigenschaft "Output" eines undefinierten oder Nullverweises kann nicht abgerufen werden. (0x800a138f)
i'm not very familar with scripting DOpus so i'm not shure where the misstake is. In my eyes the definition of "DOpus" comes at the beginning, but i dont know about this rules.
On second view i saw gemini set up wrong variables for my target.
Blame on me, to try gemini, so i need your help.
How can i create this data by button correctly ?
Big thanks to all ![]()