0 votos

¿Revelar enlace simbólico en Finder, NO el archivo al que resuelve?

Escribí el siguiente script para seleccionar los elementos copiados/pegados del Finder en la carpeta de destino en la que los pegué.

tell application "Finder"
    set thePath to POSIX path of (insertion location as alias)
    set theFiles to paragraphs of (the clipboard)
    set theOutput to {}
    set theFile to {}

    repeat with i from 1 to count of theFiles
        set theFile to POSIX file (thePath & item i of theFiles) as text
        set end of theOutput to theFile as text
    end repeat

    reveal theOutput
    activate

end tell
--return theOutput

Funciona muy bien en la mayoría de los archivos y carpetas por igual, incluso los que pueden tener " en algún lugar del nombre.

Sin embargo, cuando los archivos copiados/pegados son un enlace simbólico, Finder los resuelve a los archivos originales en lugar de seleccionar/revelar los archivos de enlace (que es lo que pretendo conseguir).

¿Hay alguna forma de cambiar el script para que no siga/resuelva los archivos de enlace a su destino y en su lugar revele los propios archivos de enlace en Finder?

1voto

Mockman Puntos 16

En el ejemplo siguiente, el archivo 'man rsync269.pdf' era en realidad un enlace simbólico (creado con ln -s ). Tenga en cuenta que el select describe este archivo como un "archivo de alias" en lugar de como un "archivo de documento". El tercer elemento es ahora una carpeta.

Actualización: Añadido soporte para carpetas

tell application "Finder"
    set tPath to (insertion location)
    --> folder "random-storage" of folder "username" of folder "Users" of startup disk of application "Finder"
    set fileNameList to paragraphs of (the clipboard)
    --> {"man rsync269.pdf", "man unzip.pdf", "man pages"}

    set tOutput to {}
    repeat with ii from 1 to count of fileNameList
        try -- if file (includes alias files)
            set end of tOutput to file (item ii of fileNameList) of tPath
        on error -- if folder (technically, if not a file)
            set end of tOutput to folder (item ii of fileNameList) of tPath
        end try
        --> alias file man rsync269.pdf of folder "random-storage" of folder "username" of folder "Users" of startup disk
    end repeat

    select tOutput
    --> {alias file "man rsync269.pdf" of folder "random-storage" of folder "username" of folder "Users" of startup disk of application "Finder", document file "man unzip.pdf" of folder "random-storage" of folder "username" of folder "Users" of startup disk of application "Finder", folder "man pages" of folder "random-storage" of folder "username" of folder "Users" of startup disk of application "Finder"}
end tell

Alternativamente, creo que esto también funcionaría si se fuerza todo a texto y luego se precede cada referencia con archivo (es decir, componer una url de archivo).

0voto

Max Well Puntos 161

También he añadido lo siguiente al final del script en la respuesta aceptada para facilitar la lectura del texto de depuración de las rutas de los archivos copiados/pegados y seleccionados en Finder.

set debugtext to {}
repeat with j from 1 to count of tOutput
    set end of debugtext to (POSIX path of ((item j of tOutput) as string)) & return
end repeat
return debugtext

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