如何将指定文件夹文件添加至iTunes播放列表且不复制文件?
解决iTunes AppleScript添加文件到播放列表不复制且避免类型错误的问题
我之前也踩过这个坑,折腾了好一阵才搞明白问题出在哪,咱们一步步来解决:
为什么会出现你碰到的两个问题?
- 用
add myFolder to playlist playListName时文件被复制:这是iTunes默认的导入行为——添加文件夹时它会自动把文件复制到自己的Media库文件夹,除非你明确告诉它不要这么做。 - 单个文件添加时报类型错误:你大概率是直接传了字符串格式的文件路径,但iTunes的AppleScript接口需要的是文件引用对象(比如别名或POSIX文件),纯文本路径会触发那个奇怪的
«class cUsP»错误。
正确的AppleScript写法
1. 添加单个文件(不复制)
tell application "iTunes" -- 替换成你的目标播放列表名称 set targetPlaylist to playlist "playListName" -- 替换成你的文件路径,格式是「磁盘名:文件夹路径:文件名」 set targetFile to alias "Macintosh HD:Users:YourName:Music:MyFiles:song.mp3" -- 关键:用without copy告诉iTunes不要复制文件 add targetFile to targetPlaylist without copy end tell
2. 添加整个文件夹的所有媒体文件(不复制)
如果要批量处理文件夹里的文件,需要先遍历文件夹里的支持格式文件,再逐个添加:
tell application "iTunes" set targetPlaylist to playlist "playListName" -- 替换成你的目标文件夹路径 set targetFolder to alias "Macintosh HD:Users:YourName:Music:MyFolder:" -- 借助Finder获取文件夹里的所有媒体文件 tell application "Finder" -- 可以根据需要添加更多支持的格式,比如"flac"、"wav" set mediaFiles to files of targetFolder whose name extension is in {"mp3", "m4a", "aac"} -- 如果要递归处理子文件夹,把上面的行改成: -- set mediaFiles to files of entire contents of targetFolder whose name extension is in {"mp3", "m4a", "aac"} end tell -- 逐个添加到播放列表,不复制文件 repeat with aFile in mediaFiles add aFile to targetPlaylist without copy end repeat end tell
几个关键注意点
- 必须用文件引用对象:别直接传字符串路径,用
alias或者POSIX file "/path/to/file"(转成别名),否则肯定会报类型错误。 without copy是核心:这个参数会强制iTunes只创建原文件的引用,完全不会复制文件到它的Media文件夹,哪怕你在iTunes偏好里开了“添加时复制文件”的选项也没用——脚本参数会覆盖全局设置。- 文件移动后的影响:因为只是引用原文件,要是你之后移动或删除了原文件,播放列表里的对应条目会变成灰色无法播放,这点要注意。
内容的提问来源于stack exchange,提问作者Zax
相关产品推荐
相关产品推荐

