Verwenden Sie Automator und Applescript-Dateien in Ordner zu verschieben, basierend auf Dateinamen
-
28-09-2019 - |
Frage
Ich habe einen Ordner, der die folgenden Dateien enthält:
Elephant.19864.archive.other.pdf
Elephant.17334.other.something.pdf
Turnip.19864.something.knight.pdf
Camera.22378.nothing.elf.pdf
Ich möchte diese Dateien auf die folgende Struktur bewegt
Archive
Elephant
Elephant.19864.pdf
Elephant.17334.pdf
Turnip
Turnip.19864.pdf
Camera.HighRes
Camera.HighRes.22378.pdf
Die erzeugten Dateien bestehen aus einem Wort oder mehrere Wörter, durch eine Folge von Zahl, gefolgt von anderen Wörtern gefolgt und dann die Verlängerung. Ich möchte diese in einem Ordner das Wort oder die Worte, bevor die Zahlen, und entfernen Sie alle Wörter zwischen den Zahlen und der Verlängerung (.pdf in diesem Fall) genannt bewegen.
Wenn der Ordner nicht vorhanden ist, dann muss ich es schaffen.
dachte ich, das ganz einfach sein würde, mit Automator oder einem Applescript, aber ich scheine nicht in der Lage zu sein, meinen Kopf zu bekommen um ihn herum.
Ist das einfach mit Automator / Apple wenn ja, was soll ich bei
suchen werdenLösung
Es ist einfach, es ist nur nicht auf den ersten. Einige Dinge, die Ihnen den Start.
die Dateinamen analysieren, Ordnernamen zu erhalten, müssen Sie den Namen in eine Liste ...
trennenset AppleScript's text item delimiters to {"."}
set fileNameComponents to (every text item in fileName) as list
set AppleScript's text item delimiters to oldDelims
--> returns: {"Elephant", "19864", "archive", "other", "pdf"}
Die Liste hat einen 1-basierenden Index, so Punkt 1 ist "Elephant" und Punkt 5 ist "pdf". die Dateinamen zusammen zerdrücken, dann alles, was Sie benötigen, ist diese
set theFileName to (item 1 of fileNameComponents & item 2 of fileNameComponents & item 5 of fileNameComponents) as string
Um einen Ordner zu erstellen, verwenden Sie nur die folgende ...
tell application "Finder"
set theNewFolder to make new folder at (theTargetFolder as alias) with properties {name:newFolderName, owner privileges:read write, group privileges:read write, everyones privileges:read write}
end tell
Um eine Datei zu bewegen, alles, was Sie benötigen, ist dieses ...
tell application "Finder"
set fileMoved to move theTargetFile to theTargetFolder
end tell
Um eine Datei umzubenennen, verwenden Sie so etwas wie die folgenden ...
set theFileToRename to theTargetFilePath as alias -- alias is important here
set name of theFileToRename to theFileName
Ich schlage vor, zunächst eine Liste aller der Zieldateien erstellen, dann für jede Datei in der Liste, die auf den Namen basierten Ordner erstellen, um die Datei bewegen, schließlich die Umbenennung, sobald es in seiner endgültigen Lage ist.
Mit Salz abschmecken.