我一直在修补一个脚本,该脚本使用 sips 从 Finder 即服务中方便地调整 JPEG 文件压缩。它维护文件戳,与简单的自动操作压缩/重新缩放功能不同。
唉,它偶然发现了某些文件名,例如带有空格的文件名,并且可能不会重新缩放它们,因为文件输出阻塞了空格字符。因此,它会在"DSC03761.JPG"等文件上按预期进行,但在"DSC03761 2.JPG"上则不然。如果路径包含空格,例如,如果文件位于名为"my Pictures"的文件夹中,则也会失败。
因为我是菜鸟,所以还没有想出如何调整剧本。你可能有更好的主意?
脚本截图
bash脚本如下:
for f in "$@"; do
# Save creation date time stamp of the target file in 't'.
t="$(/usr/bin/GetFileInfo -d "$f")"
# Compress the target file. Level 0-100 or low/normal=50/high/best
filename=$f
#/usr/bin/sips --setProperty formatOptions 60 $f --out ${filename%.*}.jpg
/usr/bin/sips --setProperty formatOptions normal $f --out ${filename%.*}.jpg
# Set the modified and creation date time stamps to 't'.
/usr/bin/SetFile -m "$t" "$f"
/usr/bin/SetFile -d "$t" "$f"
done
# Notify user that operation is finished with a sound.
/usr/bin/afplay "/System/Library/Sounds/Purr.aiff"
在这里,您正确但不必要地引用了一个扩展:
t="$(/usr/bin/GetFileInfo -d "$f")"
但在这里,在需要使用引号的地方,你不需要:
/usr/bin/sips --setProperty formatOptions 60 $f --out ${filename%.*}.jpg
后者应该是
/usr/bin/sips --setProperty formatOptions 60 "$f" --out "${filename%.*}.jpg"