0

私は、sipsを使用して Finder as a Service内から便利に 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"
4

1 に答える 1

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"
于 2016-05-21T18:36:23.843 に答える