【问题标题】:How can I get a 'quoted form of' using a variable?如何使用变量获得“引用形式”?
【发布时间】:2019-04-10 18:29:25
【问题描述】:

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

【问题讨论】:

    标签: macos shell automation applescript


    【解决方案1】:

    alias list 获取文件夹中的文件并从别名中获取 POSIX 路径更容易。

    path to desktop as text 是当前用户桌面的 (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
    

    【讨论】:

      【解决方案2】:

      我重写了所有内容,并能够使用以下代码使其工作:

          set pathVAR1 to "/Users/johndavidson/Desktop/Upload/Temp/HighRes/"
      
          set pathVAR2 to pathVAR1 & filename
      
          set myvar to do shell script "mdls -name kMDItemKeywords " & quoted form of pathVAR2
      
          set var1 to ((offset of "(" in myvar) + 1)
      
          set var2 to ((length of myvar) - 1)
      
          set myKeywords to ((characters var1 thru var2 of myvar) as string)
      

      【讨论】:

        猜你喜欢
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多