Rimuovi la sezione delimitatore dal nome del file con Automator

1

Sto creando uno script di automazione che copia i file da una cartella a un'altra e quindi esegue un AppleScript per rinominare il file suddividendolo tramite delimitatore e salvando nuovamente il secondo elemento. Ad esempio, utilizzando i nomi di file di:

  • un nuovo file $ SG789.jpg
  • file_2 $ 123-456.jpg
  • file_name $ LG123.jpg
  • this_file $ 558-432.jpg

Sto provando a dividere il nome file con il simbolo del dollaro "$" per creare i seguenti nuovi file:

  • SG789.jpg
  • 123-456.jpg
  • LG123.jpg
  • 558-432.jpg

Tuttavia, quando eseguo lo script, ottengo il seguente errore:

L'azione "Esegui AppleScript" ha riscontrato un errore. Impossibile ottenere l'elemento 2 dell'alias "Macintosh HD: Utenti: download: Archivio: un nuovo file $ SG789-PROC.jpg".

Questo è il codice che sto utilizzando nel flusso di lavoro Esegui AppleScript:

on run {input, parameters}
    set AppleScript's text item delimiters to "$"
    repeat with anItem in input
        set fileName to item 2 of anItem
        return fileName
    end repeat
end run

Che cosa sto sbagliando?

    
posta Yazmin 21.07.2017 - 05:06
fonte

1 risposta

0

Stai sbagliando molte cose:

  1. Se imposti i delimitatori di elementi di testo di AppleScript su un altro valore predefinito {} , ripristinalo sempre su {} una volta terminato con il delimitatore temporaneo.
  2. input è un list e come tale dovresti return a list e fallo fuori dal repeat loop .
  3. item 2 nel repeat loop deve essere text item 2 , tuttavia , anItem nel repeat loop in questo il caso d'uso deve essere anche text , quindi deve essere (anItem as text) .
  4. fileName deve essere un list perché stai elaborando un list e devi return a list .

Detto questo, ecco un esempio del flusso di lavoro di Automator con una azione AppleScript codificata in un modo esemplificativo di come scriverei il codice . Nota che, mentre restituisce un elenco dei nomi di file dopo il delimitatore $ , non sono sicuro di cosa ti farà bene poiché tutto dipende dal codice non attualmente presente in questo esempio.

CodiceAppleScriptperEseguiazioneAppleScript:

onrun{input,parameters}trysetAppleScript'stextitemdelimitersto{"$"}
        set theFileNameList to {}
        repeat with thisItem in input
            set the end of theFileNameList to text item 2 of (thisItem as text)
        end repeat
        set AppleScript's text item delimiters to {}
        return theFileNameList
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} ¬
            default button 1 with icon caution
        set AppleScript's text item delimiters to {}
        return
    end try
end run
    
risposta data 21.07.2017 - 08:32
fonte

Leggi altre domande sui tag