Ich bin wahrscheinlich einer der wenigen der sich immer wieder über DEVONthink ärgert. Also eine EierlegendeWollMilchSau-Software ist es für mich nicht. Einfache Dinge sind oft kompliziert…
Es wurden viele hundert Dokumente eingescannt, die alle mit dem Datum beginnen. Zum Teil mit zweistelligen und zum Teil mit vierstelliger Jahreszahl. Also z.B.
210721_FirmaX_Rechnung
20210721_FirmaY_Rechung
20080303_FirmaZ_Angebot
Wie kann ich bei den Einträgen die mit sechsstelligem Datum beginnen eine 20 voranstellen? Auf dem Mac wusste ich einige Lösungen, aber in DEVONthink suche ich mir den Wolf. Selbst im Arbeitsbuch steht nichts zur Stapelverarbeitung.
Stapelverarbeitung geht mit intelligenten Regeln oder Script.
Die Aufgabe, die du vor dir hast, kann z.B. mit folgendem Skript erledigt werden:
tell application id "DNtp"
set theRecords to selected records
repeat with theRecord in theRecords
set theOrig to name of theRecord
set theName to texts 1 thru 8 of theOrig
try
set theTest to theName as integer
on error
set theName to "20" & theOrig
set name of theRecord to theName
end try
end repeat
end tell
Quick’n’Dirty, d.h. ohne Fehlerroutine. Das Skript nimmt sich die ersten 8 Zeichen des Dateinamens. Wenn diese 8 Zeichen alle Zahlen sind, macht das Skript nichts. Ansonsten stellt es 20 vorn an. Vorsicht, das macht es auch wenn du eine Datei mit dem Namen “ich sollte aber nicht verändert werden” auswählst. Das Skript könnte natürlich auch dahingehend angepasst werden, dass es nur reagiert, wenn zumindest die ersten 6 Zeichen Ziffern sind…
Das Skript per cut&paste in Script Editor, in DT die Dateien auswählen, die du bearbeiten willst, und dann das Skript starten. ACHTUNG: Veränderungen können nicht rückgängig gemacht werden; probiere bitte zuerst mit einigen Testdateien, ob das Skript das tut, was du willst. Wenn du viele Veränderungen vornimmst, mach zuvor eine Kopie deiner Datenbankdatei. Diese Kopie kannst du wieder löschen, wenn das Ergebnis dem Entspricht was du willst.
Natürlich geht das Ganze auch komplexer: mit intelligenten Regeln, die das Skript dann nur auf bestimmte Dateien anwenden. Oder mit RegEx um die Zeichenfolge im Namen zu suchen. Oder oder oder…
und diese Version prüft, ob die ersten 6 Zeichen Ziffern sind; wenn ja, schaut es, ob die ersten 8 Zeichen Ziffern sind. Wenn nein, stellt es 20 vorn an. Sind die ersten 6 Zeichen keine Ziffern, dann tut es nichts.
Anwendung und Hinweise siehe oben.
tell application id "DNtp"
set theRecords to selected records
repeat with theRecord in theRecords
set theOrig to name of theRecord
set theName to texts 1 thru 6 of theOrig
try
set theTest to theName as integer
set theName to texts 1 thru 8 of theOrig
try
set theTest to theName as integer
on error
set theName to "20" & theOrig
set name of theRecord to theName
end try
end try
end repeat
end tell
Oh, und willkommen im Forum DT ist eine Eierlegendewollmilchsau - gerade weil du mit Scripten und intelligenten Regeln und Gruppen arbeiten kannst.
(PS: wenn die Dokumentnamen schon beim Import umbenannt werden sollen, kannst du das Skript in einer intelligenten Regel unterbringen. Dafür sind nur minimale Änderungen erforderlich.)