Automator: Applescript per eseguire le sequenze di tasti per ogni cartella nidificata in Finder

2

Aiuto !!

Ho impiegato molte ore a cercare di risolvere questo problema e sento che è giunto il momento di chiedere aiuto:)

Sto cercando di scrivere un oggetto Applescript in Automator che eseguirà determinate sequenze di tasti in Finder per la cartella principale e ciascuna sottocartella. Finora posso solo applicare le sequenze di tasti alla cartella principale selezionata durante l'esecuzione dello script; le sottocartelle rimangono come erano senza aver applicato le sequenze di tasti.

Le sequenze di tasti sono specifiche del Finder e rendono la cartella ordinata per "Tipo" e ordinate per "Nome".

Ecco il mio codice:

activate application "Finder"

tell application "Finder"
    set theFolders to every folder of (choose folder) as alias list
end tell

tell application "System Events"
    repeat with eachFolder in theFolders
        keystroke "2" using {control down, command down}
        keystroke "1" using {control down, option down, command down}
    end repeat
end tell

Il codice ha senso per me nella mia limitata conoscenza di Applescript, ma ovviamente non funziona correttamente.

Qualche consiglio?

    
posta mvern 09.09.2016 - 03:12
fonte

2 risposte

0

Se ho capito cosa vuoi, cioè seleziona una cartella e poi questa e ogni sottocartella al suo interno, incluse le sottocartelle di sottocartelle ecc., applica queste impostazioni.

Per passare le sequenze di tasti alle cartelle di destinazione, ciascuna deve essere prima la finestra attiva in Finder, quindi Eventi di sistema possono inviare le sequenze di tasti.

Quindi scriverò il codice come nell'esempio sotto.

tell application "Finder"
    activate
    set parentFolder to (choose folder) as alias
    set theFolders to every folder of entire contents of parentFolder as alias list
    set theFolders to {parentFolder} & theFolders    -- # Adds the chosen folder to the list of folders to be acted upon.
    repeat with eachFolder in theFolders
        open eachFolder
        delay 0.5
        activate eachFolder    -- # This is done to ensure the target folder's window has focus before being acted upon.
        tell application "System Events"
            keystroke "2" using {control down, command down}    -- # Sets: View > Arrange By > Kind
            keystroke "1" using {control down, option down, command down}    -- # Sets: View > Sort By > Name
        end tell
        close eachFolder
    end repeat
end tell

Se vuoi agire solo nelle sottocartelle di primo livello all'interno della cartella principale, al posto di:

set theFolders to every folder of entire contents of parentFolder as alias list

Utilizza quanto segue:

set theFolders to every folder of parentFolder as alias list    

Si noti che delay 0.5 potrebbe non essere assolutamente necessario, tuttavia l'ho aggiunto perché senza di esso, la serie di finestre di apertura e chiusura della cartella può andare così veloce da sconcertare e rallentarla un po 'meno. Anche se potrebbe essere necessario, a seconda della velocità / lentezza dell'elaborazione, assicurarsi che la finestra di ogni cartella nel repeat loop sia effettivamente disponibile e focalizzata per ricevere le sequenze di tasti. In entrambi i casi, il valore di delay può / può essere modificato secondo necessità / voluto per consentire alle attività di verificarsi correttamente e in un modo visivo che appare più naturale di una raffica di finestre di apertura / chiusura lasciando uno a chiedersi, cosa è appena successo.

    
risposta data 09.09.2016 - 06:28
fonte
0

@ utente3439894 merita il credito per aver risposto a questo.

Il codice proposto dall'utente3439894 era:

tell application "Finder"
activate
set parentFolder to (choose folder) as alias
set theFolders to every folder of entire contents of parentFolder as alias
set theFolders to {parentFolder} & theFolders    
repeat with eachFolder in theFolders
    open eachFolder
    delay 0.5
    activate eachFolder 
    tell application "System Events"
        keystroke "2" using {control down, command down} 
        keystroke "1" using {control down, option down, command down}    
    end tell
    close eachFolder
end repeat
end tell

Questo non ha funzionato come scritto e restituito il seguente errore:

Quindi,nonessendounespertodiApplescript,hofattounpo'dicasinoconlaquartarigadicodice:

settheFolderstoeveryfolderofentirecontentsofparentFolderasalias

elohaicambiatoconquesto:

settheFolderstoeveryfolderofentirecontentsofparentFolderaslist

ehafunzionato!

Alcunicommentisuquesto.L'housatopermodificareiparametridiordinamento/ordinamentodivisualizzazionedimigliaiadicartelle,lamaggiorpartedellequalinonguardo,madalmomentocheèstatoautomatizzatoefacile,perchéno.L'hoeseguitoconunritardodi0,1invecedi0,5ehafunzionatobene.Nonl'hoprovatosenzaindugio.L'uniconodoincuimisonoimbattutoerachesembravaesserciunasortadibuconerocumulativoassociatoalcodice.Quandol'hoeseguitosullamiadirectorychecontenevamigliaiadisottocartelle,cisonovolutequasi7orepercompletarel'operazione.LamiafandiMacBookèentrataingiocoquandolatemperaturadellaCPUèaumentatadrasticamente.Stranamente,iltemporichiestopereseguireogniserieditastièinqualchemodoaumentatoneltempo-letteralmenteèdiventatopiùlentoelento.Noneroingradodifarealcunadiagnosipoichélaroutinenonerainesecuzioneinbackground,mainrealtàfunzionavacomeselostessifacendomanualmente.L'holasciatogiraredurantelanotteehoscopertocheilmiocomputereraancoralento,tuttiiprogrammifunzionavanolentamenteelapiccolarotellaerascattatapericompitipiùsemplici.SonoriuscitoadaprireActivityMonitorehonotatocheilprocessoWindowServerutilizzavacircail130%dellaCPU-comeèpossibile,nonloso,maèquellochehadetto.Cosìhoriavviatoeilproblemaèandatovia.EccounoscreenshotdelriepilogodiAutomatormostratoallafinedelprocesso:

Comehodetto,pocomenodi7ore.Maneèvalsalapena!Sedovessifarlodinuovo,loeseguiròsolosulledirectoryprincipaliacuiaccedoconunacertaregolarità.Orapossofinalmentetornareaciòcheintendevofareinprimoluogo,primaditrovarequesto"problema" :) Malcolm in the Middle : Hal prova a cambiare una lampadina

    
risposta data 11.09.2016 - 03:10
fonte

Leggi altre domande sui tag