使用“自动操作”服务和 sips 调整 JPEG 压缩级别 - 绊倒某些文件名



我一直在修补一个脚本,该脚本使用 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"

相关内容

  • 没有找到相关文章

最新更新