Ich kann den Status der Dateisperre („Nur lesen“) im Kontextmenü einer Datei ändern:
Einen Menüpunkt hierfür gibt es nicht.
Wie kann ich ein Finder-Menüelement (Kontextmenü) erstellen, um diese Markierung schneller festzulegen, zu entfernen oder umzuschalten?
Antwort1
Sie können ein neues Menüelement erstellen, das dies tut, indem Sie einServicedas empfängtDaten und Ordnerals Eingabe injede Anwendungim Automator.
Sie haben zwei Implementierungsoptionen. Wählen Sie eine der beiden Automator-Aktionen aus, mit denen Sie den Service-Workflow erstellen möchten:
- Shell-Skript ausführen
- AppleScript ausführen
Der folgende Code implementiert dieUmschaltenBefehl, da dieser der komplexeste ist.
Shell-Skript ausführen
Diese Variante verwendet stat
zum Lesen der für die Datei gesetzten Flags. Dies sind die gleichen Werte, die normalerweise beim Ausführen von angezeigt werden ls -lO
, aber stat
es ist eine sauberere Lösung zum Lesen der Werte. Das gesperrte Flag oder uchg
hat den Wert 0x2
, also prüfen wir danach.
chflags
wird verwendet, um den Wert zu ändern, und growlnotify
, optionaler Teil vonKnurren, wird verwendet, um Erfolgs- oder Fehlermeldungen anzuzeigen.
Verwenden Sie den folgenden Bash-Skript-Codeausschnitt als Teil der Aktion „Shell-Skript ausführen“:
for f in "$@"
do
let "$( stat -f "%f" "$f" ) & 0x2"
if [ $? -ne 0 ] ; then
chflags uchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to lock $f!"
/usr/local/bin/growlnotify "Locked File" -m "$f was locked!"
else
chflags nouchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to unlock $f!"
/usr/local/bin/growlnotify "Unlocked File" -m "$f was unlocked!"
fi
done
Konfigurieren der Aktion zum Empfangen von Eingabenals Argumente.
AppleScript ausführen
Verwenden Sie den folgenden AppleScript-Codeausschnitt als Teil der Aktion „AppleScript ausführen“:
on run {input, parameters}
repeat with f in input
try
tell application "Finder" to set locked of f to (not locked of f)
on error errmsg
tell application "Finder" to display alert errmsg
end try
end repeat
end run
Wenn die Aktion fehlschlägt, zB weil Berechtigungen fehlen, wird pro Datei, die nicht geändert werden konnte, ein Dialog angezeigt.