10 votos

Programación/Script-atically cambiar el valor predeterminado de Abrir-Con la configuración de

Es allí una manera a cambio de qué aplicación se abre un tipo de archivo mediante programación/con un script?

Básicamente, a veces estoy trabajando en un sitio web, y quiero establecer todos los archivos web para abrir con un editor de texto (*.php, *.html, *.htm, etc...).

Sin embargo, otras veces, sólo quiero ver los archivos, así que quiero abrir con un navegador.

Ahora mismo, estoy arrastrando los elementos en los iconos del dock, que funciona, pero es lento, especialmente cuando estoy pasando por un gran número de archivos con el teclado.

Básicamente, lo que quiero es un pequeño applescript/lo que sea, que los cambios de todos los abiertos con la configuración.
De esa manera, yo puedo tener una secuencia de comandos para cada abierto con el programa, y cambiar de ida y vuelta.

Gracias.

13voto

rohith Puntos 118

Esto es posible, pero probablemente no es tan sencillo como se podría pensar. Usted necesitará conseguir muy familiarizado con el Tipo de Uniforme Identificadores. Buscar en la Wikipedia del Identificador de Tipo Uniforme de la página.

OS X se almacena la información en la preferida de las asociaciones de archivos en un archivo de preferencias con el nombre com.apple.LaunchServices.plist. Antes de ir a tratar de encontrar y modificar ese archivo, te sugerimos que se familiarice con OS X del dominio de la jerarquía por defecto (un.k.a. "configuración"). Un decente artículo sobre esto se puede encontrar aquí. (Descargo de responsabilidad: ellos parecen estar vendiendo algo en ese sitio. No sé lo que es y no tienen ninguna relación con ellos, la explicación es sólo una buena alternativa).

Ahora que sabes todo acerca de los incumplimientos y las infecciones urinarias (er, no el médico de la especie), ahora podemos hablar acerca de la configuración de las asociaciones de archivos a partir de una secuencia de comandos de línea de comandos.

En primer lugar, usted tendrá que saber la forma correcta de identificar los archivos que desea hacer una asociación.

Recuerdo cómo me dijo Iu eran importantes? Hay varias formas de identificar a un archivo. Depende de si el tipo ha sido formalmente declarado en su sistema o no. Por ejemplo, digno de los editores de texto como TextMate o TextWrangler va a añadir un par de declaraciones de tipo para el tipo de jerarquía cuando se utilizan en su sistema. Sin embargo, si usted no tiene las aplicaciones, puede que no tenga los tipos declarados.

OK, basta de charla. Ejemplos:

Obtener la UTI de un archivo:

$ mdls myFile.xml
...
kMDItemContentType             = "public.xml"
kMDItemContentTypeTree         = (
    "public.xml",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
...

Ok, genial. Una explícita el tipo de contenido que se pueden utilizar. Escríbelo en algún lugar.

$ mdls myFile.myExtn
...
kMDItemContentType             = "dyn.ah62d4rv4ge8048pftb4g6"
kMDItemContentTypeTree         = (
    "public.data",
    "public.item"
)
...

Oops. OS X que no se conoce ".myExtn de archivos". Así, se crea una dinámica de la infección urinaria por la que no podamos usar para cualquier cosa. Y el padre tipos son demasiado genérico como para ser útil.

Ahora que sabemos lo que nuestros archivos, veamos el caso de la LaunchServices.plist archivo y ver lo que podemos hacer:

$defaults read com.apple.LaunchServices
{
    ...
    LSHandlers =     (
                {
            LSHandlerContentType = "public.html";
            LSHandlerRoleAll = "com.apple.safari";
            LSHandlerRoleViewer = "com.google.chrome";
        },
    ...
                {
            LSHandlerContentTag = myExtn;
            LSHandlerContentTagClass = "public.filename-extension";
            LSHandlerRoleAll = "com.macromates.textmate";
        },
    ...
    );
    ...
}

Así que, cuando usted tiene un "buen" tipo de contenido a utilizar, la primera construcción es mejor. De lo contrario, el otro constructo. Tenga en cuenta que hay otras construcciones en ese archivo, pero que no son relevantes para lo que usted pidió. Sólo sé que están ahí cuando se mira a través de la salida.

Como usted puede ver, usted tendrá que encontrar la UTI para la aplicación que desea utilizar. La Itu para Safar y TextMate están en mi ejemplo anterior, pero de forma genérica encontrar la UTI para una aplicación:

$ cd /Applications/MyApp.app/Contents
$ less Info.plist
...
        <key>CFBundleIdentifier</key>
        <string>com.apple.Safari</string>
...

NOTA: no tengo ninguna idea de lo que constituye la diferencia entre LSHandlerRollAll y LSHandlerRollViewer. No puedo encontrar documentación sobre los que en cualquier lugar. Lo que quiero hacer ver es que el 99% del tiempo LSHandlerRollAll es el único conjunto (es decir, no hay LSHandlerRollViewer en todos) y que se establece en la UTI de la aplicación que se desea asociar el tipo con.

Después de haber traído hasta este punto, voy a dejar de CÓMO establecer los valores que se quieren como ejercicio para el lector. Jugar con estas cosas puede ser un poco peligroso. Es totalmente posible que el tornillo de seguridad de un archivo y no tiene NINGUNA de sus asociaciones de archivos de trabajo. Entonces usted tiene que tirar el archivo y empezar de nuevo.

Algunos consejos:

  • Leer en defaults write y su sintaxis
  • Echa un vistazo a PlistBuddy. man PlistBuddy y /usr/libexec/PlistBuddy -h
  • Omitir todo este disparate total y el uso RCDefaultApp

6voto

Una opción es editar ~/Library/Preferences/.GlobalPreferences.plist:

defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentType=com.adobe.pdf;LSHandlerRoleAll=net.sourceforge.skim-app.skim;}'

Usted puede utilizar PlistBuddy para comprobar si las entradas ya existen, pero no he encontrado ninguna manera de aplicar los cambios sin reiniciar o la reconstrucción de los Servicios de Lanzamiento de la base de datos.

El uso de duti, puede ejecutar duti ~/.duti después de guardar esto como ~/.duti:

net.sourceforge.skim-app.skim .pdf all

1voto

DLRdave Puntos 398

Realmente no responder a su pregunta, pero podría ser una solución.

El Inspector en el Finder presenta la información de la que actualmente seleccionado el archivo o los archivos:

++I

La Información de Resumen de la ventana de Finder es útil cuando varios archivos seleccionados son:

^++I

Si selecciona varios archivos del mismo tipo, entonces cualquiera de los métodos anteriores le permitirá cambiar fácilmente el Abrir con: propiedad de los archivos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X