Automator-Dienst: Übergeordnetes Element von Eingaben aus Dateien oder Ordnern

Ich kann dazu keine Informationen finden, also hoffe ich, dass jemand mit Erfahrung die Lücke füllen kann.

Ich schreibe einen einfachen Automator-Dienst und komme nicht über den ersten Schritt hinaus.

  • Das Skript ist einService
  • Dienst erhält ausgewählt files or foldersinFinder.app
  • Run AppleScript

Das Drehbuch ist

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

Der inputParameter enthält die ausgewählte Datei oder den ausgewählten Ordner, und alles, was ich zu diesem Zeitpunkt tun möchte, ist, den übergeordneten Ordner des ausgewählten Elements abzurufen. Alles, was ich versuche, was von unzähligen Near -Lösungen im Web stammt, scheitert daran und sagt mir, dass ich den Container nicht in eine Referenz verwandeln kann.

Ich habe keine Ahnung, was ich tun soll, und ich kann keine Informationen darüber finden.

Wie kann ich den übergeordneten Ordner mit Automator abrufen?

Antworten (1)

Der Teil mit den geschweiften Klammern on run {input, parameters}erstellt eine Liste , und als solche müssen Sie die Eingabe als Liste adressieren .

Das folgende Beispiel geht davon aus, dass nur eine Datei oder ein Ordner an den Dienst übergeben wird:

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

Kann Ihr Dienst mehr als eine Datei oder einen Ordner gleichzeitig empfangen? ... Wenn ja, dann müssen Sie den folgenden Code einbauen .

Das folgende Beispiel geht davon aus, dass mehrere Dateien oder Ordner an den Dienst übergeben werden:

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

Referenz: Den Pfad des übergeordneten Ordners einer Datei erhalten?

Ich wusste nicht, dass das inputeine Liste ist. Danke für deine Lösungen. Ich habe den ersten in einen Dienst umgewandelt, um den übergeordneten Pfad zu erhalten, und den zweiten geändert, um mir eine Liste mit vollständigen Pfadnamen zu geben. Danke.
Das funktioniert nicht. Gibt „Container von „[ausgewählter Dateiname] kann nicht abgerufen werden“ zurück.