AppleScript/OSX - 排序问题
AppleScript/OSX - Sorting Issues
好的,我有一个脚本可以将 alpha 通道从一个文件复制到另一个文件。问题在于名称中带有 _mask 的 alpha 通道的名称有时会导致排序不正确。
例如,我有几个文件 -
124_CHARCOAL.CR2
124_hangers.CR2
124_INDIGO.CR2
124_RED.CR2
124_TAUPE.CR2
124.CR2
124_CHARCOAL_mask.pdf
124_hangers_mask.pdf
124_INDIGO_mask.pdf
124_mask.pdf
124_RED_mask.pdf
124_TAUPE_mask.pdf
只需使用 告诉应用程序 "Finder" 按名称对 myList 进行排序 即可(很少)使事物乱序。有什么方法可以解决这个问题,还是我最好只添加一些代码在排序之前从文件名中删除 _mask 部分,然后重新添加回来?
如果排序不当,这个列表会是什么样子?它应该是什么样子?
这个问题的答案可能涉及将 applescripts 文本项分隔符设置为“.CR2”,然后制作 CR2 列表中每个项目的文本项 1 的主列表,然后手动将“_mask.pdf”添加到这些结束并以这种方式手动生成一个新列表。
set myList to {"124_CHARCOAL.CR2", "124_hangers.CR2", "124_INDIGO.CR2", "124_RED.CR2", "124_TAUPE.CR2", "124.CR2"} -- this is your original sorted list of CR2 files.
set maskList to {} -- prepare an empty list to receive the correctly ordered mask list.
set AppleScript's text item delimiters to ".CR2"
repeat with thisItem in myList
set baseName to text item 1 of thisItem
set maskName to baseName & "_mask.pdf"
copy maskName to end of maskList
end repeat
set AppleScript's text item delimiters to "" -- remember to reset this to nothing
get maskList -- this returns the properly-ordered mask list.
当然,这只有在您的命名约定不偏离您在此处向我们展示的内容的情况下才有效。
好的,我有一个脚本可以将 alpha 通道从一个文件复制到另一个文件。问题在于名称中带有 _mask 的 alpha 通道的名称有时会导致排序不正确。
例如,我有几个文件 -
124_CHARCOAL.CR2
124_hangers.CR2
124_INDIGO.CR2
124_RED.CR2
124_TAUPE.CR2
124.CR2
124_CHARCOAL_mask.pdf
124_hangers_mask.pdf
124_INDIGO_mask.pdf
124_mask.pdf
124_RED_mask.pdf
124_TAUPE_mask.pdf
只需使用 告诉应用程序 "Finder" 按名称对 myList 进行排序 即可(很少)使事物乱序。有什么方法可以解决这个问题,还是我最好只添加一些代码在排序之前从文件名中删除 _mask 部分,然后重新添加回来?
如果排序不当,这个列表会是什么样子?它应该是什么样子?
这个问题的答案可能涉及将 applescripts 文本项分隔符设置为“.CR2”,然后制作 CR2 列表中每个项目的文本项 1 的主列表,然后手动将“_mask.pdf”添加到这些结束并以这种方式手动生成一个新列表。
set myList to {"124_CHARCOAL.CR2", "124_hangers.CR2", "124_INDIGO.CR2", "124_RED.CR2", "124_TAUPE.CR2", "124.CR2"} -- this is your original sorted list of CR2 files.
set maskList to {} -- prepare an empty list to receive the correctly ordered mask list.
set AppleScript's text item delimiters to ".CR2"
repeat with thisItem in myList
set baseName to text item 1 of thisItem
set maskName to baseName & "_mask.pdf"
copy maskName to end of maskList
end repeat
set AppleScript's text item delimiters to "" -- remember to reset this to nothing
get maskList -- this returns the properly-ordered mask list.
当然,这只有在您的命名约定不偏离您在此处向我们展示的内容的情况下才有效。