如何让PNG转ICNS脚本适配本地/iCloud路径及含空格文件夹?
问题解决:修复Automator脚本在iCloud/含空格路径下的运行问题
修改后的脚本
#!/bin/sh # 校验输入文件格式 if [ "${1##*.}" != "png" ] && [ "${1##*.}" != "PNG" ]; then echo "错误:仅支持PNG格式文件" exit 1 fi s="$1" NAME="${s%.*}" ICONSET="$NAME.iconset" mkdir -p "$ICONSET" sips -z 1024 1024 "$1" --out "$ICONSET/icon_512x512@2x.png" sips -z 512 512 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_512x512.png" sips -z 512 512 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_256x256@2x.png" sips -z 256 256 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_256x256.png" sips -z 256 256 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_128x128@2x.png" sips -z 128 128 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_128x128.png" sips -z 64 64 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_32x32@2x.png" sips -z 32 32 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_32x32.png" sips -z 32 32 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_16x16@2x.png" sips -z 16 16 "$ICONSET/icon_512x512@2x.png" --out "$ICONSET/icon_16x16.png" iconutil -c icns "$ICONSET" rm -rf "$ICONSET"
核心修改说明
- 变量加双引号包裹:所有涉及路径、文件名的变量(如
"$1"、"$ICONSET")都用双引号包裹,避免空格或特殊字符被Shell解析为参数分隔符,这是解决含空格路径问题的关键。 - iCloud路径无需额外处理:macOS的iCloud文件夹本质是本地映射路径(
~/Library/Mobile Documents/com~apple~CloudDocs/),Automator会直接传递正确的本地文件路径,只要变量引用规范就能正常识别。 - 增强脚本健壮性:新增PNG格式校验避免误处理其他文件;用
mkdir -p替代原mkdir,确保即使上级目录不存在也能正确创建iconset文件夹。
内容的提问来源于stack exchange,提问作者Skifess
相关产品推荐
相关产品推荐

