AppleScript文件夹动作按钮失效求助:点击按钮无对应执行动作
AppleScript文件夹动作按钮失效问题修正
问题根源
原脚本存在几个关键错误导致按钮点击后脚本中断:
display alert返回的是记录类型,直接与字符串比较会导致条件判断失效currentWindow变量未定义,触发运行时错误afplay命令路径末尾多了多余单引号,导致命令执行失败- 在Finder的tell块内调用系统UI对话框,可能引发上下文冲突
- POSIX路径未正确转换为Finder可识别的文件夹对象
修正后的代码
on run {input, parameters} set fileToMove to item 1 of input tell application "Finder" set fileName to name of fileToMove -- 选择目标文件夹并转换为Finder可识别的对象 set chosenFolder to POSIX path of (choose folder with prompt "Select a folder to move " & fileName & " ") set targetFolder to POSIX file chosenFolder as alias end tell try tell application "Finder" move fileToMove to targetFolder end tell -- 仅在移动成功时播放提示音 do shell script "afplay /System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/Volume Mount.aif" on error -- 将UI操作移到Finder tell块外,避免上下文冲突 set alertResult to display alert "Duplicate File Found" message "Would you like to move " & fileName & " to the Bin or Keep & Rename?" buttons {"Move Duplicate to Bin", "Keep & Rename", "Cancel"} default button "Keep & Rename" cancel button "Cancel" set buttonReturned to button returned of alertResult tell application "Finder" if buttonReturned is "Move Duplicate to Bin" then delete fileToMove else if buttonReturned is "Keep & Rename" then -- 同样将对话框移到Finder块外 set newName to text returned of (display dialog "Set New File name for: " & fileName default answer "") set name of fileToMove to newName move fileToMove to targetFolder end if end tell end try -- 移除未定义的currentWindow调用,若需要打开目标文件夹可启用下方代码 -- open targetFolder end run
关键修正点说明
- 处理
display alert返回值:通过button returned of alertResult提取实际点击的按钮文本,确保条件判断生效 - 移除未定义变量:删掉报错的
open currentWindow,若需打开目标文件夹可启用注释中的open targetFolder - 修复
afplay命令:移除路径末尾多余的单引号,保证提示音正常播放 - 分离UI与Finder操作:将
display alert和display dialog移到Finder的tell块外,避免上下文冲突导致脚本中断 - 正确转换路径:用
POSIX file chosenFolder as alias将POSIX路径转换为Finder可识别的文件夹对象,确保移动操作正常执行
内容的提问来源于stack exchange,提问作者devoted_dampest
相关产品推荐
相关产品推荐

