如何实现Mac下.command脚本支持文件夹拖放作为输入路径?
实现拖放文件夹到脚本自动转换音乐文件
我来帮你搞定这个需求!其实不用Automator也能直接修改你的bash脚本实现拖放功能,当然如果你偏好用Automator做可视化的快速操作,我也会给你对应的步骤。
方法一:直接修改bash脚本支持拖放
这个方法最直接,只需要调整你的脚本,让它读取拖放过来的文件夹路径:
- 打开你的
converter.command文件,替换成下面的代码:
#!/bin/bash # 检查用户是否拖放了文件夹 if [ $# -eq 0 ]; then echo "⚠️ 请将目标文件夹拖放到这个脚本文件上!" read -p "按任意键退出..." exit 1 fi # 获取拖放的第一个文件夹路径(如果拖放多个,这里可以改成循环处理所有) srcDir="$1" # 遍历文件夹内的指定格式文件,并且跳过不存在的匹配项 for i in "$srcDir"/*.{wav,aiff,aif}; do if [ -f "$i" ]; then ffmpeg -i "$i" "${i%.*}.flac" echo "✅ 已完成转换:$i -> ${i%.*}.flac" fi done echo "🎉 所有转换任务完成!" read -p "按任意键退出..."
- 给脚本添加执行权限(如果还没加的话):
打开终端,输入以下命令(把路径换成你的脚本实际路径):
chmod +x /path/to/your/converter.command
- 现在你只需要把目标文件夹直接拖到
converter.command文件上,终端就会自动打开并执行转换啦!
方法二:用Automator创建快速操作
如果你希望在Finder右键菜单里直接调用转换功能,可以用Automator做一个快速操作:
- 打开「Automator」应用,选择创建「快速操作」(旧版系统可能叫「服务」)。
- 在左侧的动作库中搜索「运行Shell脚本」,把它拖到右侧的工作流程区域。
- 在顶部设置:
- 「工作流程收到」选择「文件夹」
- 「位于」选择「Finder」
- 把Shell设置为
/bin/bash,「传递输入」选择「作为自变量」。 - 在脚本输入框中粘贴以下代码:
for srcDir in "$@"; do # 遍历当前文件夹内的指定格式文件 for i in "$srcDir"/*.{wav,aiff,aif}; do if [ -f "$i" ]; then ffmpeg -i "$i" "${i%.*}.flac" echo "✅ 已完成转换:$i -> ${i%.*}.flac" fi done done
- 保存这个快速操作,比如命名为「转换音乐为FLAC」。
现在你在Finder里右键任意文件夹,就能在「快速操作」菜单里找到这个选项,点击后就会自动执行转换啦!
注意事项
- 确保你的系统已经安装了
ffmpeg,如果没有的话,可以用Homebrew安装:
brew install ffmpeg
内容的提问来源于stack exchange,提问作者Léo Coco
相关产品推荐
相关产品推荐

