具有多个查找器输入的 AppleScript

AppleScript with multiple finder inputs

原因和原因 在 Finder 中,我希望能够通过简单的右键单击隐藏任何 files/folders,无论是否需要 sudo。

已采取的步骤: 经过大量试验后,我选择了 Automator 服务 运行 和 AppleScript

on run {input, parameters}
  set filehide1 to {}
  repeat with filehide2 in input
  set end of filehide1 to POSIX path of filehide2
  end repeat
  do shell script "chflags hidden " & quote & filehide1 & quote with administrator privileges
end run

问题: 因此,只有在一次选择一个项目时,脚本才能以目前的形式工作。我如何调整 Automator / AppleScript 以工作,无论它是 1 个文件还是 500 个文件?

您不能将 AppleScript 列表传递给 shell。您必须展平列表并用 space 个字符分隔文件路径。这可以用 text item delimiters 来完成。

脚本在重复循环中对每个文件路径进行转义,因此 do shell script 行中不需要引号。

on run {input, parameters}
    set filehide1 to {}
    repeat with filehide2 in input
        set end of filehide1 to quoted form of POSIX path of filehide2
    end repeat
    set {TID, text item delimiters} to {text item delimiters, space}
    set fileList to filehide1 as text
    set text item delimiters to TID
    do shell script "chflags hidden " & fileList with administrator privileges
end run