Ich habe jetzt schon eine ganze Weile gesucht, kann aber anscheinend keine relevante Anleitung für diese spezielle Aufgabe finden. Ich bin ganz neu auf diesem Gebiet, also entschuldigen Sie, wenn ich etwas Grundlegendes vermisse.
Wie viele Fotografen komme ich von einem Shooting mit einer Karte zurück, die RAW- (CR2), JPG- und MOV-Dateien in einem einzigen Ordner enthält. Nachdem ich diesen Ordner auf meine Festplatte kopiert habe, muss ich die folgenden Aktionen ausführen, für die ich einen einzelnen Dienst erstellen möchte, damit ich denselben Prozess für jeden beliebigen Ordner ausführen kann.
Also hier ist, was ich automatisieren möchte:
Ich dachte, das wäre einfach, aber das Problem scheint in meiner Notwendigkeit zu liegen, dass dies ein generischer Dienst ist, der nicht an einen bestimmten Ordnerpfad gebunden ist. Ich brauche es, um für andere Ordner wiederholbar zu sein, aber ich kann diesen wesentlichen Vielseitigkeitsaspekt nicht herausfinden.
Ich habe bereits ein Apple Script gefunden und angepasst (siehe unten), das die benötigten Unterordner erstellt. Dieser Teil funktioniert gut als eigenständiger Dienst. Aber ich kann anscheinend nicht den zweiten Schritt ausführen, der das eigentliche Verschieben von Dateien durchführen würde.
Ich weiß, wie man Dateien eines bestimmten Typs in einen bestimmten Ordner verschiebt , aber das ist nicht das, was ich brauche. Ich möchte, dass alle JPGs in einem bestimmten Ordner in einen neuen Unterordner namens JPG innerhalb des ausgewählten Ordners verschoben werden , und ebenso für die anderen Dateitypen. Ich verstehe, wie man diese Dateitypen filtert, aber bisher kann ich nicht herausfinden, wie man sie in einen Ordner verschiebt, ohne einen Pfad angeben zu müssen, ich weiß nicht, wie man auf Ordner zeigt, die noch nicht existieren. Selbst wenn ich könnte, wären diese Pfade für jeden Ordner, an dem ich arbeiten muss, unterschiedlich.
Kann mir jemand einen Rat geben oder mich auf eine relevante Diskussion hinweisen?
Vielen herzlichen Dank.
///
Hier ist das Apple-Skript für meinen Dienst zum Erstellen von Unterordnern:
Skripttext:
on run {input, parameters}
set output to {}
tell application "Finder"
set {source_folder, source_name} to {it, name} of first item of input
repeat with prefix in {"JPG - ", "RAW - ", "Edits - ", "Video - "}
make new folder at source_folder with properties {name:contents of prefix & source_name}
set end of output to result as alias
end repeat
Hinweis: Der Teil der Automatisierung zum Verschieben von Dateien betrifft nicht den Ordner "Bearbeitungen - ". Dies ist nur ein Container für zukünftige Dateien.
Wenn ich mehrere Ordner innerhalb eines ausgewählten Ordners erstellen und die vorhandenen Dateien innerhalb des ausgewählten Ordners basierend auf der Dateierweiterung in die innerhalb des ausgewählten Ordners erstellten Ordner verschieben möchte, würde ich kein AppleScript verwenden bash
.
Der folgende Dienst nimmt die ausgewählten Ordner im Finder und führt Folgendes aus:
for f in "$@"; do
cd "$f"
d="$(basename "$f")"
mkdir -p "Edits - $d" "JPG - $d" "Raw - $d" "Video - $d"
mv *.JPG "./JPG - $d"
mv *.CR2 "./RAW - $d"
mv *.MOV "./Video - $d"
done
Ich bin davon ausgegangen, dass Sie die eigentlichen Ordner auswählen , um sie beispielsweise über das kontextbezogene Rechtsklick-Dienstemenü an Ihren Automator- Dienst-Workflow zu übergeben.
In Anbetracht dessen würde Ihr Service-Workflow wie folgt aussehen:
Hier ist das Skript, das in die Aktion einfließt Run AppleScript
:
on run input
set [input] to the input
repeat with directory in the input
organiseFilesOfFolder_(POSIX path of the directory)
end repeat
end run
to organiseFilesOfFolder:f
local f
script SourceFolder
use sys : application "System Events"
property location : a reference to folder f of sys
property name : (a reference to name of my location)
script JPGs
property folder : missing value
property name extension : "jpg"
property list : {}
property id : "JPG"
end script
script RAWfiles
property folder : missing value
property name extension : "cr2"
property list : {}
property id : "RAW"
end script
script Videos
property folder : missing value
property name extension : "mov"
property list : {}
property id : "Video"
end script
script Edits
property folder : missing value
property id : "Edits"
end script
to make new "folder" given type:fileType
[fileType's id, " - ", my name's contents]
make new folder at my location ¬
with properties {name:¬
contents of result as text}
set the folder of the fileType to the result
end make
on listOf:fileItems
set the list of fileItems to (every file ¬
of my location where its name extension ¬
is the name extension of the fileItems)
end listOf:
end script
tell the SourceFolder
repeat with fileType in its [JPGs, RAWfiles, Videos, Edits]
make new "folder" given type class:fileType
if the contents of the fileType = its Edits then ¬
exit repeat
if (its listOf:fileType) is not {} then ¬
tell application "System Events" to move ¬
list of fileType to the ¬
folder of the fileType
end repeat
end tell
end organiseFilesOfFolder:
bash
vs. Run AppleScript erledigt werden kann. Aber schönes Skript!hit
hit
. Ich meinte, wenn Sie denken, dass Bash der bessere Ansatz ist, warum nicht die Lösung positiv bewerten? Ich habe CJK positiv bewertet, weil er die Frage mit reinem AppleScript beantwortet hat, da dies anscheinend die Anfrage war. Wenn der Benutzer eine AppleScript-Lösung eingebunden hätte, aber dann erwähnt hätte, dass Bash besser ist, hätte ich auch seine positiv bewertet. Wenn der Benutzer das getan hätte, wäre diese Antwort der bessere Ansatz.Please avoid extended discussions in comments.
also belassen wir es dabei. Letztlich entscheidet der OP.
CJK