Ottenere la selezione del file Automator da più finestre

0

Ho creato un'azione (servizio) di un automatore che esamina due diversi file o cartelle e quindi esegue un'azione in base ai relativi percorsi e nome file. Il problema è che ogni coppia di file / cartelle si trova in una posizione diversa. Posso aprire due finestre del Finder e selezionare il file o la cartella in ciascuna di esse, ma quando provo a eseguire l'azione Automator, passa solo il nome del file dalla finestra del Finder attualmente selezionata.

Come posso fare in modo che Automator esegua l'azione sui file di cartelle diverse?

Il mio automatore ha una singola azione, "Esegui Shell Script" con il seguente script:

for filepath in "$@"; do
  P4TH='echo "$filepath" | rev | cut -d/ -f2- | rev'
  FILE='echo "$filepath" | rev | cut -d/ -f1 | rev' 
  echo "P4TH=$P4TH, FILE=$FILE" >> /Users/michael/debug.txt
done
    
posta Michael 20.09.2014 - 05:33
fonte

2 risposte

1

Ciò è possibile selezionando la seconda finestra per ottenere la selezione.

Inserisci l'azione " Esegui AppleScript " nella prima posizione nel flusso di lavoro, cancella tutto il testo nell'azione e inserisci questo script nell'azione:

on run {input, parameters}
    tell application "Finder"
        activate -- doesn't work without the activate
        open target of Finder window 2 ---  select the second Finder window
        set end of input to (item 1 of (get selection)) as alias -- append the selection (in the second window) to the input list
        open target of Finder window 2
    end tell
    return input
end run

Testato su Mavericks

    
risposta data 20.09.2014 - 17:59
fonte
1

L'unica cosa a cui si può pensare è un po 'di AppliScript della GUI.

Inserisci questo codice in un'azione "Esegui applicazione applescript" sopra l'azione "Esegui script shell".

Applescript è commentato per spiegare cosa sta facendo. Ma sappi che questo codice ti sta per iniziare.

Funziona nei miei test.

NOTA QUESTO SCRIPT FUNZIONA QUANDO I WINDOWS SONO IN VISTA LISTA

Ma non se selezioni un elemento in un elenco che si trova effettivamente sotto un'altra cartella .i.e la cartella discloser è rivolta verso il basso e tu hai selezionato un elemento all'interno di esso. Riceverai un errore.

    set thePaths to {} -- empty list

    (* NOTE THIS SCRIPT WORKS WHEN THE WINDOWS ARE IN LIST VIEW *)
    tell application "Finder"
        activate
        set theWindows to target of windows -- get the windows target paths
        repeat with i from 1 to number of items in theWindows -- repeat for each window
            set this_window to item i of theWindows -- get window #n
            set thisSelection to my getSelected(i) as string -- run sub routine and pass the item count as the arguments

            set thePath to POSIX path of (item thisSelection of this_window as alias) -- convert the path to unix style path
            copy thePath to end of thePaths -- add to list
        end repeat
    end tell
Return thePaths

    on getSelected(i)
        set theRowSelection to "" -- declare variable
        tell application "System Events"
            tell process "Finder"

                set theRowSelection to value of text field 1 of UI element 1 of ((rows of outline 1 of scroll area 1 of splitter group 1 of window i) whose value of attribute "AXSelected" is true) -- get the selected item by using the attributes of the window - WHICH HAS THE SIDE BAR SHOWING

                 if theRowSelection is {missing value} then -- THE SIDE BAR SHOWING WAS NOT SHOWING SO THE scroll area 1 NEEDS TO CHANGE TO scroll area 2

                    set theRowSelection to value of text field 1 of UI element 1 of ((rows of outline 1 of scroll area 2 of splitter group 1 of window i) whose value of attribute "AXSelected" is true)

                end if

            end tell
        end tell
        return theRowSelection -- return the selected item name
    end getSelected
    
risposta data 20.09.2014 - 10:08
fonte

Leggi altre domande sui tag