Servicio de Automator: principal de la entrada de archivos o carpetas

No puedo encontrar ninguna información sobre esto, así que espero que alguien con experiencia pueda llenar el vacío.

Estoy escribiendo un servicio de Automator simple y no puedo pasar del primer paso.

  • El guion es unService
  • Servicio recibe seleccionado files or foldersenFinder.app
  • Run AppleScript

el guion es

on run {input,parameters}
    set test to container of input -- Can’t make container into type reference.
    display dialog test as string
    return input
end run

El inputparámetro tiene el archivo o carpeta seleccionado, y todo lo que quiero hacer en esta etapa es obtener la carpeta principal del elemento seleccionado. Todo lo que intento, que proviene de innumerables soluciones cercanas en la web, falla en esto, diciéndome que no puedo convertir el contenedor en una referencia.

No tengo idea de lo que debería estar haciendo, y no puedo encontrar ninguna información sobre esto.

¿Cómo puedo obtener la carpeta principal usando Automator?

Respuestas (1)

La parte de llaves de on run {input, parameters}crea una lista y, como tal, debe abordar la entrada como una lista .

El siguiente ejemplo asume que solo se pasa un archivo o carpeta al Servicio:

on run {input, parameters}
    tell application "System Events"
        set thePath to POSIX path of (container of (item 1 of input))
    end tell
    return thePath
end run

¿Puede su Servicio recibir más de un archivo o carpeta a la vez? ... En caso afirmativo, deberá incorporar el código siguiente.

El siguiente ejemplo asume que varios archivos o carpetas se pasan al Servicio:

on run {input, parameters}
    set pathList to {}
    repeat with itemNum from 1 to count of input
        tell application "System Events"
            copy POSIX path of (container of (item itemNum of input)) to end of pathList
        end tell
    end repeat
    return pathList
end run

Referencia: ¿ Obtener la ruta de la carpeta principal de un archivo?

No sabía que inputera una lista. Gracias por tus soluciones. He convertido el primero en un servicio para obtener la ruta principal y modifiqué el segundo para que me proporcione una lista de nombres completos de rutas. Gracias.
esto no funciona Devuelve "No se puede obtener el contenedor de" [nombre de archivo seleccionado].