Automator: servizio per spostare i file in nuove sottocartelle in base all'estensione del file * all'interno di qualsiasi cartella selezionata *

2

Ho cercato per un po 'di tempo ma non riesco a trovare istruzioni pertinenti per questo particolare compito. Sono nuovo di zecca in questo modo scuse se mi manca qualcosa di base.

Come molti fotografi, torno da una ripresa con una scheda contenente file RAW (CR2), JPG e MOV in un'unica cartella. Una volta che copio questa cartella sul mio disco rigido, devo eseguire le seguenti azioni, per le quali vorrei creare un singolo servizio, in modo da poter eseguire lo stesso processo per qualsiasi cartella che scelgo.

Quindi ecco cosa mi piacerebbe automatizzare:

  1. Crea cartelle separate per Raw, JPG e Video nella cartella selezionata.
  2. Identifica i file di ogni tipo e spostali nelle cartelle create nel primo passaggio.

Ho pensato che sarebbe stato semplice, ma il problema sembra risiedere nel mio bisogno che si tratti di un servizio generico, non legato ad alcun percorso di cartella specifico. Ho bisogno che sia ripetibile per altre cartelle, ma non riesco a capire quell'aspetto essenziale della versatilità.

Ho già trovato e adattato un Apple Script (vedi sotto) che crea le sottocartelle di cui ho bisogno. Quella parte funziona bene come servizio a sé stante. Ma non riesco a eseguire il secondo passo che farebbe il vero movimento dei file.

So come spostare file di un certo tipo in una cartella specifica ma non è quello che mi serve. Ho bisogno che tutti i JPG in una determinata cartella vengano spostati in una nuova sottocartella denominata JPG all'interno della cartella selezionata e allo stesso modo per gli altri tipi di file. Capisco come filtrare questi tipi di file, ma finora non riesco a capire come spostarli in una cartella senza dover specificare un percorso, non so come fare riferimento a cartelle che non esistono ancora. Anche se potessi, quei percorsi saranno diversi per ogni cartella su cui ho bisogno di lavorare.

Qualcuno può dare consigli o indicarmi una discussione pertinente?

Molte, molte grazie.

///

Ecco lo script Apple per il mio servizio di creazione di sottocartelle:

Testodelloscript:

onrun{input,parameters}setoutputto{}tellapplication"Finder"
        set {source_folder, source_name} to {it, name} of first item of input
        repeat with prefix in {"JPG - ", "RAW - ", "Edits - ", "Video - "}
            make new folder at source_folder with properties {name:contents of prefix & source_name}
            set end of output to result as alias
        end repeat

Nota: la parte di spostamento del file dell'automazione non coinvolgerà la mia cartella "Modifica -". Questo è solo un contenitore per i file futuri.

    
posta David 27.09.2018 - 09:43
fonte

2 risposte

2

Se volessi creare più cartelle all'interno di una cartella selezionata e spostare i file esistenti all'interno della cartella selezionata, nelle cartelle create all'interno della cartella selezionata, in base all'estensione del file, allora utilizzerei bash non AppleScript .

Il seguente servizio prende le cartelle selezionate nel Finder e procede come segue:

  • Crea le seguenti cartelle all'interno della cartella selezionata dove "$ parent_folder_name" è il nome della cartella selezionata su cui viene eseguito il servizio:
    • "Modifica - $ parent_folder_name"
    • "JPG - $ parent_folder_name"
    • "RAW - $ parent_folder_name"
    • "Video - $ parent_folder_name"
  • Sposta i file esistenti nelle cartelle appena create sulla base dell'estensione del file.
for f in "$@"; do
    cd "$f"
    d="$(basename "$f")"
    mkdir -p "Edits - $d" "JPG - $d" "Raw - $d" "Video - $d"
    mv *.JPG "./JPG - $d"
    mv *.CR2 "./RAW - $d"
    mv *.MOV "./Video - $d"
done

    
risposta data 27.09.2018 - 14:54
fonte
3

Ho pensato che tu stia selezionando le cartelle attuali per passarle al tuo flusso di lavoro del servizio Automator tramite, ad esempio, il diritto contestuale -click menu servizi.

Dato questo, ecco come sarà il flusso di lavoro del tuo servizio:

Eccoloscriptchevanell'azioneRunAppleScript:

onruninputset[input]totheinputrepeatwithdirectoryintheinputorganiseFilesOfFolder_(POSIXpathofthedirectory)endrepeatendruntoorganiseFilesOfFolder:flocalfscriptSourceFolderusesys:application"System Events"

        property location : a reference to folder f of sys
        property name : (a reference to name of my location)

        script JPGs
            property folder : missing value
            property name extension : "jpg"
            property list : {}
            property id : "JPG"
        end script

        script RAWfiles
            property folder : missing value
            property name extension : "cr2"
            property list : {}
            property id : "RAW"
        end script

        script Videos
            property folder : missing value
            property name extension : "mov"
            property list : {}
            property id : "Video"
        end script

        script Edits
            property folder : missing value
            property id : "Edits"
        end script


        to make new "folder" given type:fileType
            [fileType's id, " - ", my name's contents]

            make new folder at my location ¬
                with properties {name:¬
                contents of result as text}

            set the folder of the fileType to the result
        end make

        on listOf:fileItems
            set the list of fileItems to (every file ¬
                of my location where its name extension ¬
                is the name extension of the fileItems)
        end listOf:
    end script

    tell the SourceFolder
        repeat with fileType in its [JPGs, RAWfiles, Videos, Edits]
            make new "folder" given type class:fileType
            if the contents of the fileType = its Edits then ¬
                exit repeat

            if (its listOf:fileType) is not {} then ¬
                tell application "System Events" to move ¬
                    list of fileType to the ¬
                    folder of the fileType
        end repeat
    end tell
end organiseFilesOfFolder:
    
risposta data 27.09.2018 - 15:05
fonte

Leggi altre domande sui tag