使用Automator / Applescript在特定字符后裁剪文件名?

时间:2012-04-06 06:43:24

标签: applescript automator

我有一个包含大约5000个文件的文件夹,其名称如下:

    Invoice 10.1 (2012) (Digital) (4-Attachments).pdf 
    Carbon Copy - Invoice No 02 (2010) (2 Copies) (Filed).pdf
    01.Reciept #04 (Scanned-Copy).doc

我想通过删除第一个方括号中的所有内容来重命名这些文件,所以它们看起来像这样:

    Invoice 10.1.pdf
    Carbon Copy - Invoice No 02.pdf
    01.Reciept #04.doc

我发现很多脚本会删除最后的x个字母,但不会删除任何特定字符的字母。

理想情况下我想使用Automator,但我猜这可能太复杂了。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试:

set xxx to (choose folder)
tell application "Finder"
set yyy to every paragraph of (do shell script "ls " & POSIX path of xxx)
repeat with i from 1 to count of yyy
    set theName to item i of yyy
    set name of (file theName of xxx) to (do shell script "echo " & quoted form of theName & " | sed s'/ (.*)//'")
end repeat
end tell

答案 1 :(得分:0)

code posted by @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”。要将文件名拆分为名称和扩展名,并重新添加扩展名,您可以使用系统事件'磁盘文件 - 文件夹套件,这将提供方便的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,当然, ,已经无效了。)