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

AppleScript获取含斜杠文件名异常问题求助

解决AppleScript获取带斜杠文件名的问题

哈哈,这个坑我踩过!macOS的文件系统底层逻辑在搞鬼——因为传统HFS+把冒号作为路径分隔符,所以当你创建带斜杠的文件名时,系统会偷偷把斜杠转成冒号存在底层,但显示给你的还是斜杠。这就是为什么你用name属性拿到的是soso: lala.txt,而basename只会截取最后一段的原因。

下面给你两种靠谱的解决方法:

方法一:用System Events的displayed name属性(推荐)

displayed name是系统专门用来返回用户看到的原始显示名称的属性,不会做字符转换,直接就能拿到带斜杠的文件名:

set input to choose file multiple selections allowed yes
tell application "System Events"
    set originalFileName to displayed name of item 1 of input
    set sourcePath to POSIX path of container of item 1 of input
end tell
return originalFileName -- 这里会返回你要的"soso/lala.txt"

这个方法的优势是不需要调用外部shell命令,纯AppleScript就能搞定,效率更高也更稳定。

方法二:用mdls读取文件元数据

如果你偏好shell命令的方式,可以用mdls读取文件的kMDItemDisplayName元数据,这个字段存的就是显示给用户的原始文件名:

set input to choose file multiple selections allowed yes
set filePOSIXPath to POSIX path of item 1 of input
-- 用quoted form处理路径里的特殊字符,避免shell解析出错
set originalFileName to do shell script "mdls -name kMDItemDisplayName -raw " & quoted form of filePOSIXPath

注意一定要加quoted form,不然如果文件路径里有空格或特殊字符,shell命令会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:49