macos - 如何使用变量获取 'quoted form of'?

标签 macos shell automation applescript

我一直致力于创建一个迭代文件的脚本,并且能够从聚光灯元数据中获取“关键字”元数据。在从 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/

相关文章:

objective-c - OS X - WebView 问题

python - 将 Python 3.1 与 TextMate 一起使用

linux - 批处理文件 通过比较文本文件中的名称来检查文件是否存在于文件夹中

linux - 用没有sed的shell替换二进制文件中的十六进制

azure - 是否可以通过 Powershell 访问 Azure 中安全中心建议的严重性?

ios - 我可以删除 Xcode.app/Contents/Developer/下的平台吗?

macos - 使用 os.Rename 移动文件,触发 CREATE 然后触发 CHMOD

bash - 如何在获取 shell 脚本之前对其进行语法检查?

java - 如何在网页的某个框架(以div分隔)上向下滚动?

Python - 软件的静默安装和验证