@adayzone 发布的代码可以工作,但不需要为此使用sed
——普通的 AppleScript 可以,使用offset
:
set fullString to "Invoice 10.1 (2012) (Digital) (4-Attachments).pdf"
set trimmedString to text 1 thru ((offset of "(" in fullString) - 1) of fullString
-- trim trailing spaces
repeat while trimmedString ends with " "
set trimmedString to text 1 thru -2 of trimmedString
end repeat
这将返回“Invoice 10.1”。要将文件名拆分为名称和扩展名,并重新添加扩展名,您可以使用System Events的 Disk-File-Folder 套件,该套件将提供方便的name extension
属性,您可以存储和重新添加修剪名称后添加。
假设您使用一些 Automator 操作来获取要处理的文件,完整的处理工作流程将是在文件选择部分之后添加一个 AppleScript 操作,并使用以下代码:
repeat with theFile in (input as list)
tell application "System Events"
set theFileAsDiskItem to disk item ((theFile as alias) as text)
set theFileExtension to name extension of theFileAsDiskItem
set fullString to name of theFileAsDiskItem
-- <insert code shown above here>
set name of theFileAsDiskItem to trimmedString & "." & theFileExtension
end tell
end repeat
如果您希望 Automator 工作流程进一步处理文件,您还必须为重命名的文件创建一个别名列表,并从 AppleScript 操作中返回该别名(而不是input
,这当然不再有效)。