具有多个查找器输入的 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
原因和原因 在 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