Regel oder Script für Dateinamenänderung "JJJJMMTT_*" zu "JJJJ-MM-TT_*"

Hallo!
Kann man das Datum recht einfach per Script/Regel für Dateien ändern, die diesem Muster entsprechen? Wenn man dabei gleich noch das Erstelldatum mit anpassen könnte, wäre das toll.

  1. Dateien finden, die dem Muster “JJJJMMTT_*” entsprechen
  2. Dateiname ändern in “JJJJ-MM-TT_*”
  3. Erstelldatum ändern in TT.MM.JJJJ aus dem Dateinamen

Vielen Dank!
Th.

Dieser Thread könnte hilfreich für dich sein:

Hallo, vielen lieben Dank!
Sicher wird mir das helfen, ich bin jetzt schon eine Weile mit Versuch und Irrtum unterwegs. Ich raffe es einfach nicht, wie ich einen Block [0-9]{8}_ (Suchpattern) aufgelöst (sprich: ersetzen durch) bekomme. In der Regex-Referenz und im Netz allgemein finde ich leider noch keine Lösung dafür.
Das Script habe ich mir installiert und versuche es einfach weiter … vielleicht hat einer noch einen Vorschlag :grinning:.

Danke und beste Grüße
Th.

EDIT: Ich hab’s!

Suchpattern:([0-9]{4})([0-9]{2})([0-9]{2})(_.*)
Ersetzen: \1-\2-\3\4

Doch lässt sich das wiederverwendbar speichern? Geht das mit einer intelligenten Regel zu lösen?
Also noch offene Fragen … :face_with_monocle:

Das Script kannst du in einer Smart Rule als Embedded Script verwenden

Stell das Script, das du gefunden bzw. verwendet hast, doch mal hier ein

Hallo zusammen,

ich habe das genau wie in dem verlinkten Thread gemacht:
Rename Using RegEx


Und diese beiden Pattern verwendet:
Source pattern:
Destination Pattern:
Vielmehr würde mir jedoch gefallen, das in einem “festen” Script zu haben ohne die Pattern jedesmal eintragen zu müssen. Aber als Workaround schon mal zu verwenden. Weiter bin ich nicht gekommen.

Beste Grüße
Th.

Vielleicht weiß @BLUEFROG etwas dazu

Grob würde ein solches Skript für intelligente Regeln folgendermaßen aussehen:

property sourcePattern : ""
property destPattern : ""

on performSmartRule(theRecords)
	tell application id "DNtp"
		if sourcePattern is not "" and destPattern is not "" then
			repeat with theRecord in theRecords
				set theName to name of theRecord
				set transformedName to do shell script "echo " & quoted form of theName & " | sed -E 's/" & sourcePattern & "/" & destPattern & "/g'"
				set name of theRecord to transformedName
			end repeat
		end if
	end tell
end performSmartRule

Die Properties sourcePattern und destPattern müssen entsprechend angepasst werden.

1 Like

Hallo Herr Grunenberg,

vielen Dank für das Script! Es ist immer wieder eine Freude :star_struck: zu sehen, was alles geht in DevonThink! Hier für alle das Ergebnis:


Im DestPattern muss noch eine Verdopplung des Backslash erfolgen, sicher gibt es dafür eine Syntax-Begründung (bei mir war es try & error). Mit diesem Muster lassen sich nun einige ähnliche Aufgaben lösen, vielen Dank noch einmal!

Beste Grüße
Th.

Der Backslash wird tatsächlich von AppleScript selbst verwendet.