我一直致力于创建一个迭代文件的脚本,并且能够从聚光灯元数据中获取“关键字”元数据。在从 stackoverflow 上的其他人那里获得帮助时,我已经能够获取元数据,但无法迭代文件。
tell application "Finder"
set sourceFolder to folder POSIX file "/Users/jdavidson/Desktop/Upload/Birds and Butterflies/HighRes/"
set theFiles to files of sourceFolder
set inputPath to "/Users/jdavidson/Desktop/Upload/Birds and Butterflies/"
end tell
repeat with afile in theFiles
set filename to name of afile
set fname to text 1 thru ((offset of "." in filename) - 1) of filename
set pathVAR1 to "/Users/jdavidson/Desktop/Upload/Birds and Butterflies/HighRes/"
set pathVAR2 to pathVAR1 & filename
--set pathVAR3 to "\"" & pathVAR2 & "\""
set pathVAR3 to quoted form of pathVAR2
display dialog pathVAR3
set myvar to do shell script "mdls -name kMDItemKeywords " & pathVAR3
--Substring's the data to between "(" and ")"--
--set var1 to var1 + 1
set var2 to ((offset of ")" in myvar) - 1)
--set var2 to var2 - 1
set myKeywords to ((characters var1 thru var2 of myvar) as string)
display dialog myKeywords
end repeat
可以正常工作并且不会出错的代码如下:
set myvar to do shell script "mdls -name kMDItemKeywords " & quoted form of "/Users/jdavidson/Desktop/Upload/Birds and Butterflies/To Process/Floral/RF78-3.tif"
set var1 to ((offset of "(" in myvar) + 1)
--set var1 to var1 + 1
set var2 to ((offset of ")" in myvar) - 1)
--set var2 to var2 - 1
set myKeywords to ((characters var1 thru var2 of myvar) as string)
display dialog myKeywords
问题是能够以“引用形式”将变量传递给 shell
最佳答案
更容易将文件夹中的文件作为别名列表
获取,并从别名中获取 POSIX 路径。
文本形式的桌面路径
是当前用户桌面的 (HFS) 路径
set sourceFolder to (path to desktop as text) & "Upload:Birds and Butterflies:HighRes:"
tell application "Finder"
set theFiles to files of folder sourceFolder as alias list
end tell
repeat with aFile in theFiles
set myvar to do shell script "mdls -name kMDItemKeywords " & quoted form of POSIX path of aFile
--- ...
end repeat
关于macos - 如何使用变量获取 'quoted form of'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619147/