Verwenden Sie Automator und Applescript-Dateien in Ordner zu verschieben, basierend auf Dateinamen

StackOverflow https://stackoverflow.com/questions/3875650

  •  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 werden
War es hilfreich?

Lö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 ...

trennen
set 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top