代码之家  ›  专栏  ›  技术社区  ›  Jeremy Cantrell

在applescript中将list设置为shell脚本输出

  •  0
  • Jeremy Cantrell  · 技术社区  · 15 年前

    我有一个shell脚本输出文件名(每行一个)。我想把输出放到applescript的列表中。

    我该怎么做?

    然后如何将这些文件名字符串转换为文件对象的奖励点数。

    编辑:

    尝试此操作时:

    set theFiles to {}
    repeat with i from 1 to count of filenames
        set end of theFiles to (POSIX file (item i of filenames))
    end repeat
    

    我明白这一点:

    error "Finder got an error: Can’t get POSIX file \"/path/to/file\"." number -1728 from file "Macintosh HD:path:to:file"
    

    编辑2:

    结果发现finder不知道在“tell”语句启动后创建的文件。如何更新它或使它知道新文件?

    编辑3:

    这是有效的(注意添加了“我的”):

    set theFiles to {}
    repeat with i from 1 to count of filenames
        set end of theFiles to (my POSIX file (item i of filenames))
    end repeat
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   regulus6633    15 年前
    set myFilenamesList to paragraphs of (do shell script "path/to/shell/script")
    set firstFileObject to POSIX File (item 1 of myFilenamesList)
    

    当您有一个列表时,您可以使用一个重复循环来遍历该列表,并对列表中的项目执行一些操作。例如,如果需要文件对象的列表,可以这样做。

    set fileObjectsList to {}
    repeat with i from 1 to count of myFilenamesList
    set end of fileObjectsList to POSIX File (item i of myFilenamesList)
    end
    return fileObjectsList
    

    当然,这样做没有多大意义,因为一旦将文件对象放在一个列表中,那么您就需要重复该列表来处理这些对象…因此,您将在列表中重复2次,而1次可能就足够了。所以我会做类似的事情…

    repeat with i from 1 to count of myFilenamesList
    set thisFileObject to POSIX File (item i of myFilenamesList)
    -- do something with the file object "thisFileObject"
    end