我一直在修补一个使用 sips 的脚本来方便地从Finder中调整JPEG文件压缩作为服务。与简单的Automator压缩/重新缩放功能不同,它维护文件标记。
唉,它绊倒了某些文件名,例如:具有空格并且不会重新缩放它们的大概是因为文件输出在空格字符上窒息。因此,它会在预期的文件上继续进行,例如" 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"
答案 0 :(得分:0)
在这里,你正确但不必要地引用扩展:
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"