Elenco nidificato non intenzionale di percorsi POSIX in Applescript

0

Sto cercando di estrarre un elenco di file con estensioni corrispondenti da una directory con sottocartelle, da utilizzare in uno script del terminale.

Le voci dell'elenco devono essere separate da barre verticali "|" per scorrere attraverso l'app della riga di comando, e ho bisogno di rimuovere il primo elemento nell'elenco.

on run
    set savedDelimiters to AppleScript's text item delimiters
    set AppleScript's text item delimiters to "|"
    set sourceFolder to choose folder with prompt "Please select directory."
    tell application "System Events"
        set itemList to (POSIX path of every disk item in folders of sourceFolder whose name extension is "VOB" as string)
        log itemList as string
    end tell
    set AppleScript's text item delimiters to savedDelimiters
end run

Il problema è la lista risultante in realtà una lista all'interno di un elenco. Notare le doppie parentesi graffe nella risposta:

        get POSIX path of every disk item of every folder of alias "Macintosh HD:Users:USERNAME:Desktop:test2:" whose name extension = "VOB"
    --> {{"/Users/USERNAME/Desktop/test2/VIDEO_TS/VIDEO_TS.VOB", "/Users/USERNAME/Desktop/test2/VIDEO_TS/VTS_01_0.VOB", "/Users/USERNAME/Desktop/test2/VIDEO_TS/VTS_01_1.VOB", "/Users/USERNAME/Desktop/test2/VIDEO_TS/VTS_01_2.VOB", "/Users/USERNAME/Desktop/test2/VIDEO_TS/VTS_01_3.VOB", "/Users/USERNAME/Desktop/test2/VIDEO_TS/VTS_01_4.VOB"}}

Quando provo a lavorare con l'elenco, ad esempio:

log rest of itemList as string

Restituisce una stringa vuota, poiché l'elenco creato ha solo un elemento.

Pensando che mi manca qualcosa di ovvio ... grazie per dare un'occhiata!

    
posta bashlock 21.10.2016 - 02:32
fonte

2 risposte

1

Prova:

set sourceFolderPath to POSIX path of (choose folder with prompt "Please select directory.")
if sourceFolderPath ends with "/" then set sourceFolderPath to text 1 thru -2 of sourceFolderPath
set findResultsList to paragraphs of (do shell script "find " & quoted form of sourceFolderPath & " -type f -flags nohidden -iname '*.VOB';")
set AppleScript's text item delimiters to {"|"}
set findResultsText to findResultsList as text
set AppleScript's text item delimiters to {""}
return findResultsText
    
risposta data 21.10.2016 - 04:30
fonte
0

So che hai la tua risposta, ma per rimanere fedele a Applescript, avresti potuto modificare il tuo script in questo modo:

on run
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "|"
set sourceFolder to choose folder with prompt "Please select directory."
tell application "System Events"
    set itemList to (POSIX path of every disk item in folders of sourceFolder whose name extension is "mp3" as string)
    set newItemList to {}
    repeat with n from 1 to count of itemList
        if (count of item n of itemList) > 0 then
            copy item n of itemList to the end of newItemList
        end if
    end repeat
    log newItemList as string
end tell
set AppleScript's text item delimiters to savedDelimiters
end run
    
risposta data 27.10.2016 - 15:32
fonte

Leggi altre domande sui tag