Lista anidada involuntaria de rutas POSIX en Applescript

0

Estoy tratando de extraer una lista de archivos con extensiones coincidentes de un directorio con subcarpetas, para usar en un script de terminal.

Los elementos de la lista deben estar separados por barras verticales "|" para ejecutar la aplicación de línea de comandos, y debo eliminar el primer elemento de la lista.

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

El problema es que la lista resultante es realmente una lista dentro de una lista. Observe las llaves dobles en la respuesta:

        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"}}

Cuando intento trabajar con la lista, como por ejemplo:

log rest of itemList as string

Devuelve una cadena vacía, ya que la lista creada solo tiene un elemento.

Pensando que debo estar perdiendo algo obvio ... ¡Gracias por echar un vistazo!

    
pregunta bashlock 21.10.2016 - 02:32

2 respuestas

1

Prueba:

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
    
respondido por el adayzdone 21.10.2016 - 04:30
0

Sé que tienes tu respuesta pero para mantenerte en Applescript puro, podrías haber modificado tu script de esta manera:

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
    
respondido por el boissonnfive 27.10.2016 - 15:32

Lea otras preguntas en las etiquetas