使用Automator从文件名中删除分隔符部分


1

我正在创建一个自动播放器脚本,用于将文件从一个文件夹复制到另一个文件夹,然后运行AppleScript以通过分隔符分隔符重新命名该文件并重新保存第二个项目。例如,使用以下文件名:

  • 一个新文件$ SG789.jpg
  • file_2 $ 123-456.jpg
  • FILE_NAME $ LG123.jpg
  • this_file $ 558-432.jpg

我正在尝试通过“$”美元符号拆分文件名以创建以下新文件:

  • SG789.jpg
  • 123-456.jpg
  • LG123.jpg
  • 558-432.jpg

但是,当我运行脚本时,我收到以下错误:

“运行AppleScript”操作遇到错误。无法获得别名的第2项“Macintosh HD:用户:下载:存档:新文件$ SG789-PROC.jpg”。

这是我在Run AppleScript工作流程中运行的代码:

on run {input, parameters}
    set AppleScript's text item delimiters to "$"
    repeat with anItem in input
        set fileName to item 2 of anItem
        return fileName
    end repeat
end run

我究竟做错了什么?

Answers:


0

你做了很多错事:

  1. 如果将AppleScript的文本项分隔符设置为其他的默认值{},则{}在完成临时分隔符时始终将其重置为。
  2. inputlist的,因此您应该returnlist做它的外repeat 循环
  3. item 2repeat 环路必须text item 2然而anItemrepeat 循环在这种使用情况下也必须text,所以它需要(anItem as text)
  4. fileName需要成为一个list因为你正在处理一个list,你需要return一个list

也就是说,这是一个示例Automator工作流程,其中AppleScript 动作以我编写代码的示例方式编码。但请注意,虽然它在$分隔符后返回文件名列表,但我不确定它会对您有什么好处,因为它取决于此示例中当前不存在的其他代码

示例Automator工作流程

用于运行AppleScript 操作的 AppleScript 代码

on run {input, parameters}
    try
        set AppleScript's text item delimiters to {"$"}
        set theFileNameList to {}
        repeat with thisItem in input
            set the end of theFileNameList to text item 2 of (thisItem as text)
        end repeat
        set AppleScript's text item delimiters to {}
        return theFileNameList
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} ¬
            default button 1 with icon caution
        set AppleScript's text item delimiters to {}
        return
    end try
end run

啊! 你指出的是有道理的。这是我第一次涉足AppleScript,我正在将我从其他示例中理解的内容拼凑在一起。你提到你不确定它能让我回到清单上有什么好处。工作流程的下一步是重命名文本,因为我需要为所有文件添加相同的前缀。返回列表是正确的还是我缺少的东西?
Yazmin

@Yazmin,既然你没有包括整个Automator工作流程,它是什么类型的工作流程,所有相关信息和你问的问题,“ 我做错了什么? ”已经回答了,我建议你适当地标记我的答案作为有用的(向上投票)和/或接受的答案(点击复选标记),然后在一个新的问题中继续你的任务,做你正在尝试做的任何事情。你说“ 工作流程的下一步是重命名文本 ”,我不知道Automator的动作
3439894

@Yazmin,我说“ 我不确定它会对你有什么好处,因为它取决于此示例中目前不存在的其他代码。 ”因为这个答案是为了指出代码中的错误,而不是修复一个完整的工作流程尚未完整呈现。您当然可以添加额外的代码,根据需要/要求更多地执行它目前正在做的事情,但公平地说,在您提出的问题范围之外,“ 我做错了什么? ”参考运行中的AppleScript 代码您提供的AppleScript 操作
3439894

@Yazmin,你问“回复列表是否正确或是否有我遗漏的东西? ”。返回的内容取决于需要什么以及如何使用它而没有完整的图片我不能说,为什么你应该开始一个新的问题,包括整个Automator工作流程,工作流程类型,所有相关设置和信息等。
user3439894
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.