You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Automator传递文件名异常:AppleScript路径重复问题排查

问题原因分析

你遇到的路径重复问题,核心是没正确处理Automator传递给AppleScript的input参数:

  • Automator里的「服务」传递给AppleScript的input是文件别名的列表——哪怕你只选了一个文件,它也是包含单个元素的列表,不是单个文件对象。
  • 你直接执行set f to (input as text)时,AppleScript会把列表里每个文件别名的字符串形式拼接在一起。而文件别名的字符串格式是Macintosh HD/用户目录/文件路径这种,不是标准POSIX路径,拼接后就会出现重复的路径片段。
  • 后续再对这个混乱的拼接文本执行POSIX path of f,相当于把一堆错误拼接的字符串强行转成POSIX路径,最终就出现了终端里看到的重复路径。

另外还有个隐藏问题:你的文件路径里有空格(比如Sample Videos _ Dummy Videos For Demo Use.mp4),直接把路径拼进终端命令里会被终端当成多个参数,导致命令执行失败,这个也得一起解决。

修复后的代码

下面是修正后的AppleScript,解决了路径重复和空格解析问题:

on run {input, parameters}
    -- 先判断是否有传入文件
    if input is not {} then
        -- 取列表中的第一个文件(如果要批量处理可以加repeat循环遍历input)
        set targetFile to item 1 of input
        -- 把文件路径转成带引号的POSIX路径,处理空格问题
        set sourcePosixPath to quoted form of POSIX path of targetFile
        -- 正确获取桌面的POSIX路径,避免硬写/Desktop导致的路径错误
        set desktopPath to POSIX path of (path to desktop folder as text)
        set outputPosixPath to quoted form of (desktopPath & "FERTIG.m4v")
        
        tell application "Terminal"
            activate
            do script "/Applications/HandBrakeCLI --format av_mp4 --optimize --align-av --encoder x265 --quality 21 --vfr --first-audio --mixdown stereo --ab 192 --first-subtitle -i " & sourcePosixPath & " -o " & outputPosixPath
        end tell
    end if
    return input
end run
关键修复点说明
  • 处理文件列表:通过item 1 of input明确获取单个文件对象,而不是直接把整个列表转成文本。如果需要批量处理多个文件,可以用repeat with fileItem in input循环遍历每个文件。
  • 路径加引号:用quoted form of包裹POSIX路径,确保路径里的空格、特殊字符能被终端正确识别,不会被拆成多个参数。
  • 正确获取桌面路径:用path to desktop folder系统命令获取用户桌面的真实路径,代替硬写的/Desktop(硬写的/Desktop是根目录下的文件夹,不是用户个人的桌面)。

内容的提问来源于stack exchange,提问作者CodierGott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:10:50