Gruppen automatisch erstellen aus Dateinamen - geht das?

Ich habe aus einem alten Dokumenten-Programm mehrere tausend Dateien in DT3 importiert.
Wenn möglich soll aus dem Dateinamen eine Gruppe erstellt werden und alle Dateien mit diesem Namen “wandern” in die erstellte Gruppe.
Geht so etwas mit Regeln?
Siehe Bildschirmfoto.

Im Moment sehe ich keine Möglichkeit, in einer Smart-Rule eine Gruppe zu erstellen. Vielleicht übersehe ich etwas.

Falls nicht, würde ich ein Script schreiben.

  • Für alle in “Firma vertraulich/s2f Dokumente”
    – Namen des Dokuments ermitteln
    – Gruppennamen aus dem Namen ermitteln
    – Gruppe erstellen, wenn sie noch nicht existiert
    – Dokument in diese Gruppe verschieben

Allerdings: Wie genau soll den der Gruppenname bestimmt werden? Z.B. “Finanzamt Eisleben Lieferant Umbuchungsmitteilung”? Oder “Finanzamt Eisleben Lieferant”? Oder “Finanzamt Eisleben”? Oder “Finanzamt”? Dito “LV 1871 Versicherungsvertrag Info” oder “LV 1871 Versicherungsvertrag” oder “LV 1871”?

Vorschlag: Im alten System die Namen so ändern, dass DT3 daraus dann zuverlässig den Gruppennamen ermitteln kann.

Und: wenn das wirklich vertrauliche Daten sind, würde ich nicht so viele Details in einem öffentlichen Forum posten. Aber das ist natürlich Geschmackssache.

Danke für die Antwort.
Die Dateinamen, die hier gepostet wurden, sind nicht vertraulich.
Der Gruppenname soll so aussehen, wie rot umrandet.
Mit Skripten kenn ich mich leider nicht aus.

Wenn Du nur für diesen einen Fall “Schulze_Hefta_Waldtraut” die Dateien in eine neue Gruppe mit diesem Namen verschieben willst, dann kannst Du das manuell machen.

Ich hatte aber gefragt, wie z.B. die Gruppennamen für die letzte und vorletzte Zeile in deinem Screenshot aussehen sollen. Um es anders zu sagen: Es dürfte kaum eine Möglichkeit geben, aus einem Dateinamen, der derart variable ist wie hier (mal “Name_Ort_Vorname_irgendwas”, mal “FirmaTeil1_FirmaTeil2_Dokumentenart_irgendwas”, mal “Behörde_Ort_irgendwas_irgendwasanderes”) automatisch einen sinnvollen Namen für eine Gruppe zu erzeugen.

Mit anderen Worten: Gibt es irgendeine REGEL, anhand derer der gewünschte Gruppenname aus einem beliebigen Dateinamen ermittelt werden kann?

Ob es dafür eine Regel gibt, ist die ursprüngliche Frage.
Eventuell kann der DT-Support etwas dazu schreiben.
Wenn es möglich ist - sehr gut.
Wenn nicht, kann ich auch mit leben.

Eine DEVONthink-Regel gibt es dafür nicht, d.h. für ein Skript müsste bekannt sein, nach welcher Regel (im allgemeinen Sinn) Sie die Gruppen erstellen & benennen.

Die Gruppennamen sollen wie folgt bezeichnet werden:

  1. Beispiel Dateiname vorhanden:
    1995-06-13_Schulze_Helfta_Waldtraut_Versicherungspolice.pdf
    Die Gruppe soll heißen:
    Schulze-Helfta-Waldtraut

Alle Dokumente mit Schulze-Helfta-Waldtraut sollen in die Gruppe verschoben werden.

  1. Beispiel Dateiname vorhanden:
    2010-03-15_Handwerkskammer_Halle_Schriftwechsel_Eingang.pdf
    Die Gruppe soll heißen:
    Handwerkskammer-Halle

Alle Dokumente mit Handwerkskammer-Halle sollen in die Gruppe verschoben werden.

Vorne soll das Datum weg und hinten die Bezeichnung des Dokumentes.
Ich hoffe das ist einigermaßen verständlich.

Eine eindeutige Regel lässt aus den Beispielen leider nicht ableiten - mal werden nach dem Datum 2 Wörter verwendet, mal 3. Am einfachsten geht das dann wohl mit einer Liste der Wörter, die ignoriert werden sollten:

property pWordsToIgnore : {"Versicherungspolice", "Schriftwechsel", "Eingang"}

tell application id "DNtp"
	set od to AppleScript's text item delimiters
	repeat with theRecord in (selection as list)
		try
			set theName to name of theRecord
			set AppleScript's text item delimiters to "_"
			set theWords to text items 2 thru -1 of theName
			set theGroupName to ""
			repeat with theWord in theWords
				if pWordsToIgnore does not contain theWord then
					if length of theGroupName > 0 then set theGroupName to theGroupName & "_"
					set theGroupName to theGroupName & theWord
				end if
			end repeat
			set theLocation to location of theRecord
			set theGroupLocation to theLocation & theGroupName
			set theGroup to create location theGroupLocation in (database of theRecord)
			move record theRecord to theGroup
		end try
	end repeat
	set AppleScript's text item delimiters to od
end tell

Das ist aber nur ein grobes Skript, das v.a. zuerst nur mit unwichtigen Daten getestet werden sollte.

Für Menschen ist das möglicherweise verständlich, weil die wissen, was “Bezeichnung des Dokuments” ist. Aber es dürfte eben etwas schwierig werden, so ein “common sense”-System in Regeln zu gießen, die ein Programm verstehen könnte.

Um es nochmal direkt zu sagen: Du solltest Dir eine Benennung deiner Dokumente überlegen, die für eine Maschine leicht zu verstehen ist. Z.B. die “Bezeichnung des Dokuments” durch Binde- statt Unterstriche abtrennen. So, wie es jetzt ist, sehe ich keine Chance.

Ein einfaches Beispiel aus dem Screenshot, etwas abgekürzt:

Datum_S_H_P_Grundbuch.pdf
Datum_S_H_P_Rechnung_Eingang.pdf
Datum_ikk_gesund_plus_Angebot.pdf
Datum_LV_1871_Versicherungvertrag_Info_.pdf

Mal ist die Dokumentenbezeichnung zwei Wörter lang, mal eins. Mal ist der gewünschte Gruppenname drei Wörter, mal zwei.

Deshalb mein Vorschlag, die Dokumente in dem ursprünglichen System umzubenennen, wenn das dort einfach möglich ist. Hinterher sollten Namen der Form

Datum-gewünschter_gruppen_name-restliche_informationen.pdf

herauskommen. Damit kann dann auch DT3 etwas anfangen (oder irgendein anderes programmiertes/programmierbares System).

Erst mal danke für die Hilfen.
Im alten System haben die Dateien ein internes Format. Mit dem keiner was anfangen kann.
Erst durch den Export entsteht der Dateiname so wie er ist.
Da kann ich nichts ändern und muss mit dem Ergebnis vorlieb nehmen.
Wie gesagt, geht es nur um die 60.000 alten Dateien :see_no_evil:.
Die neuen (wir verwenden DT3 seit diesem Jahr) haben “richtige” Bezeichnungen.