Cambio de la asociación de archivos para un solo archivo o un conjunto de archivos (AppleScript)
Esta secuencia de comandos demuestra primero que la aplicación predeterminada para algún archivo de texto en mi sistema se configuró en TextEdit . Luego, cambia la asociación de archivos para ese archivo en particular, por lo que ahora se abre con Atom . Finalmente, asocia todos los archivos de texto en el escritorio con la aplicación Atom .
tell application "System Events"
get the default application of the file "/path/to/some file.txt"
--> alias "Macintosh HD:Applications:TextEdit.app:" of application "System Events"
# Individual file:
set the default application of the file "/path/to/some file.txt" to ¬
the path to the application named "Atom"
# A set of files:
set the default application of every file of the desktop folder whose ¬
name extension = "txt" to the path to the application "Atom"
end tell
Cambiar las asociaciones de archivos para todos los archivos de un tipo dado (JXA)
Al utilizar JavaScript para automatización, puede implementar las funciones de Core Foundation de una manera que no puede hacer con AppleScriptObjC, para interactuar con Launch Services en el nivel del sistema y cambiar la asociación de archivos para un archivo dado tipo.
Aquí, he dirigido archivos de texto sin formato (estos tienen la extensión .txt
de manera predeterminada), y cambié la aplicación predeterminada que responde a ellos Atom :
ObjC.import('CoreServices');
var contentType = 'public.plain-text';
var bundleID = Application('Atom').id();
$.LSSetDefaultRoleHandlerForContentType(
contentType,
$.kLSRolesAll,
bundleID
);
El tipo de archivo debe dirigirse por medio de un < em> Uniform Type Identifier . Estas son cadenas de texto especiales que identifican de forma única una clase o tipo de elemento determinado. El enlace lo llevará a una página que enumera las UTI declaradas por el sistema de Apple para todos los tipos de archivos probables en los que estará interesado. Tenga cuidado de no elegir simplemente la que parece coincidir con sus necesidades a primera vista, ya que las UTI son Estructurado en una especie de arbol de herencia. Por lo tanto, podría haber elegido perezosamente public.text
, que vi primero en la lista, hasta que en una lectura adicional, aprendamos que esta UTI es un tipo base para todo el texto, que incluiría los archivos HTML
y RTF
.