0

したがって、次の問題はAutomator内で発生しているようですが、確信が持てません(画像を投稿しますが、十分なポイントがありません)。

最初のアクションが「GetSpecifiedFinderItems」ツールであるAutomatorサービスがあり~/Desktop/D53_C71J_Cます。次のアクションは、「シェルスクリプトの実行」です。

PATH="$@"
echo "Path: $PATH"
cd "$PATH"
for f in *;
do
    echo "f: $f"
    CAT="$PATH/$f"
    echo "CAT: $CAT"
    cp "$f" ~/Desktop
done 

結果は

Path: /Users/ajharn/Desktop/D53_C71J_C
f: D53_C71J_C1.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1.psd

f: D53_C71J_C1_MERGE.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1_MERGE.psd
f: D53_C71J_C2.psd

など。に到達するまで、すべて機能しcpます。エコーなどでテストしてみましたが、パスが並んでいます。紛らわしい部分は cp D53_C71J_C2.psd ~/Desktop、ターミナルで正常に動作することです。

4

1 に答える 1

0

変数名の選択は非常に賢明ではありませんPATH。実行可能ファイルが配置されているディレクトリへのパスを格納するためにシェルによって使用されます ( BashGuideおよびbash man ページの特別なシェル パラメータに関するセクションを参照してください)。シェル コマンドではなく外部プログラムであるため ( で見つかります) 、現在の作業パスで上書きしてもシェルによって検出されないため、実行されません。cp/bin/cpPATH

の線に沿ってもっと何かをする

[[ -d "$@" ]] && cd "$@"                # cd into folder if is one
for f in ./*; do                        # always prefix relative globs
    [[ -f "$f" ]] && cp "$f" ~/Desktop  # only copy files
done

そしてすべてがうまくいくでしょう。もちろん、「Get Folder Contents」アクションと「Move Finder Objects」アクションを追加しても、シェルの介入なしで機能します。

于 2012-07-21T12:46:18.303 に答える