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

AppleScript移动文件疑问:命令行执行时无法提取单独文件名

问题:AppleScript如何只输出文件名而非完整对象描述?

我最近写了个基础的AppleScript脚本,用来把指定文件夹里最旧的文件移到另一个文件夹。我通过命令行运行它:osascript /Users/dmayo/Documents/scripts/MoveOldest.scpt,也设置了让脚本输出内容到终端,但现在遇到个麻烦——我没法只拿到单纯的文件名。比如代码里log this_item这一行的输出是这样的:

«class docf» 2016-04-12-01-31-31.pdf of «class cfol» 2013-long of «class cfol» Scans of «class cfol» dmayo of «class cfol» Users of «class sdsk»...

这个输出里包含了一堆文件对象的类信息,我只想要2016-04-12-01-31-31.pdf这个文件名,该怎么改呢?


解决方案

其实问题出在你直接log了文件对象本身,AppleScript会输出这个对象的完整描述信息。要单独获取文件名,你需要访问文件对象的name属性,具体可以这么改:

1. 修改日志输出获取文件名

如果只是在脚本日志里输出文件名,把log this_item改成:

log name of this_item

2. 让终端输出干净的文件名

如果是想在命令行运行脚本后,终端直接返回纯文件名,建议用return代替log,因为log的输出可能会带额外标识,而return的内容会被osascript直接返回给终端。示例代码片段如下:

tell application "Finder"
    -- 假设你已经定位到目标文件夹和最旧的文件this_item
    set targetFileName to name of this_item
    return targetFileName -- 终端会直接输出文件名
end tell

这样修改后,你再运行osascript /Users/dmayo/Documents/scripts/MoveOldest.scpt,终端就只会输出你想要的文件名啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:22