Элемент контекстного меню для более быстрой блокировки/разблокировки файлов в Finder

Элемент контекстного меню для более быстрой блокировки/разблокировки файлов в Finder

Я могу изменить статус блокировки файла («только чтение») в контекстном меню файла:

введите описание изображения здесь

Для этого пункта меню нет.

Как создать пункт меню Finder (контекстное) для более быстрой установки, удаления или переключения этого флага?

решение1

Вы можете создать новый пункт меню, который делает это, создавУслугакоторый получаетфайлы и папкикак вход влюбое приложениев Автоматоре.

У вас есть два варианта реализации. Выберите одно из двух действий Automator для построения рабочего процесса Service:

  • Запустить скрипт оболочки
  • Запустить AppleScript

Приведенный ниже код реализуетПереключатькоманда, так как она самая сложная.

Запустить скрипт оболочки

Этот вариант использует statдля чтения флагов, установленных для файла. Это те же значения, которые обычно отображаются при запуске ls -lO, но statэто более чистое решение для чтения значений. Заблокированный флаг, или uchg, имеет значение 0x2, поэтому мы его и проверяем.

chflagsиспользуется для изменения значения, и growlnotify, необязательная частьРычание, используется для отображения сообщений об успешном выполнении или ошибках.

введите описание изображения здесь

Используйте следующий фрагмент кода bash-скрипта как часть действия «Выполнить скрипт оболочки»:

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

Настройте действие для получения вводакак аргументы.

 Запустить AppleScript

Используйте следующий фрагмент кода AppleScript как часть действия «Запустить AppleScript»:

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

Если действие не удалось выполнить, например, из-за отсутствия разрешений, отображается одно диалоговое окно для каждого файла, который не удалось изменить.

введите описание изображения здесь

Связанный контент