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
相关产品推荐
相关产品推荐

