AppleScript移动文件时如何将重复文件移入子文件夹避免自动加copy后缀
AppleScript 按文件名前缀分类并自动归档重复文件方案
需求背景
- 原有脚本逻辑:根据文件名前6个字符,将选中文件夹内的文件移动到对应名称的子文件夹;若对应子文件夹已存在则直接移入
- 原有默认行为:若目标子文件夹内存在同名文件,系统会自动给新移入的文件添加
copy后缀,该逻辑为系统默认行为,非自定义脚本逻辑 - 目标需求:执行文件移动操作前,先将目标文件夹内已存在的同名文件移动到目标文件夹下名为
_alt的子文件夹中,同时保留新旧两份文件,避免系统自动添加copy后缀
修改后可直接使用的脚本
set mgFilesFolder to (choose folder with prompt "Choose folder…") tell application "Finder" -- 仅获取选中文件夹根目录下的文件,排除已生成的子文件夹 set fileList to every file of mgFilesFolder repeat with thisFile in fileList set fileName to name of thisFile -- 提取文件名前6位作为分类文件夹名称 set targetFolderName to text 1 thru 6 of fileName -- 分类文件夹不存在则新建 if not (exists folder targetFolderName of mgFilesFolder) then make new folder at mgFilesFolder with properties {name:targetFolderName} end if set targetFolder to folder targetFolderName of mgFilesFolder -- 检查目标分类文件夹下是否存在同名文件 if exists file fileName of targetFolder then -- _alt归档文件夹不存在则新建 if not (exists folder "_alt" of targetFolder) then make new folder at targetFolder with properties {name:"_alt"} end if set altFolder to folder "_alt" of targetFolder -- 将原有同名文件移入_alt文件夹归档 move file fileName of targetFolder to altFolder end if -- 移动当前待处理文件到分类文件夹,不会触发系统自动加copy后缀的逻辑 move thisFile to targetFolder end repeat end tell
逻辑说明
- 移除了原脚本两次遍历文件的冗余逻辑,单次遍历即可完成全流程操作,运行效率更高
- 移动文件前增加同名文件校验:发现重复文件时,先在对应分类文件夹下创建
_alt子文件夹(若未存在),将原有重复文件移入_alt归档后再移动新文件 - 遍历文件时自动过滤根目录下的所有文件夹,不会误操作新建的分类文件夹、归档文件夹
内容的提问来源于stack exchange,提问作者Achim Gehrig
相关产品推荐
相关产品推荐

