Elemento del menú contextual para bloquear/desbloquear archivos en Finder más rápidamente

Elemento del menú contextual para bloquear/desbloquear archivos en Finder más rápidamente

Puedo cambiar el estado de bloqueo del archivo ("solo lectura") en el menú contextual de un archivo:

ingrese la descripción de la imagen aquí

No hay ningún elemento de menú para esto.

¿Cómo puedo crear un elemento de menú del Finder (contextual) para configurar, eliminar o alternar esta bandera más rápidamente?

Respuesta1

Puede crear un nuevo elemento de menú que lo haga creando unServicioque recibearchivos y carpetascomo entrada encualquier aplicaciónen Automator.

Tienes dos opciones de implementación. Elija una de las dos acciones de Automator para crear el flujo de trabajo del Servicio:

  • Ejecutar script de shell
  • Ejecute AppleScript

El siguiente código implementa elPalancacomando, ya que es el más complejo.

Ejecutar script de shell

Esta variante se utiliza statpara leer los indicadores establecidos para el archivo. Estos son los mismos valores que normalmente se muestran al ejecutar ls -lO, pero states una solución más limpia para leer los valores. La bandera bloqueada, o uchg, tiene el valor 0x2, así que eso es lo que estamos comprobando.

chflagsse utiliza para cambiar el valor, y growlnotify, parte opcional deGruñido, utilizado para mostrar mensajes de éxito o error.

ingrese la descripción de la imagen aquí

Utilice el siguiente fragmento de código del script bash como parte de la acción Ejecutar script de Shell:

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

Configurar la acción para recibir informacióncomo argumentos.

 Ejecute AppleScript

Utilice el siguiente fragmento de código AppleScript como parte de la acción Ejecutar 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

Si la acción falla, por ejemplo porque faltan permisos, se muestra un cuadro de diálogo por cada archivo que no se pudo cambiar.

ingrese la descripción de la imagen aquí

información relacionada