日々適当

hibitekitou

ChatGPTはお利口です。

mac |2024-06-01

あるサーバーの共有フォルダにて、なぜかFInderで新規フォルダを作成したときそのフォルダの名前を変更できないことがあります。原因がわからないのだけど、リネームができないのはFinderからだけみたいで、ターミナルから mv 名称未設定フォルダ newFolderName は通ります。とはいえ、いちいちその階層にターミナルで移動してコマンド実行は面倒なので、ChatGPTでいい方法ない?って聞いてみたら教えてくれました。Automatorを使います。

新規書類をクイックアクションにした上で、以下の画像の設定にしています。

今回はフォルダのリネームが問題なのでワークフローが受け取る現在の項目をフォルダに、検索対象はFinderにした上で、「シェルスクリプトを実行」を追加して、入力の引き渡し方法を「引数として」にします。でスクリプト部分を以下のように記述する。

for f in "$@"
do
    open -a "Finder" "$f"
    /usr/bin/osascript -e 'tell application "Finder" to set name of item (POSIX file "'$f'") to text returned of (display dialog "Enter new name:" default answer "")'
done

ChatGPTからの指示そのままでほぼ完成します。素晴らしいですね。
出来上がったクイックアクションを実行して開くリネームのためのパネルでキャンセルを選んだ時の時の処理を書いてないのが問題ではありますが。ってかこれ、AppleScriptじゃんw キャンセルが押されるとエラーが返るからそれに対して何も処理をしないって処理を書いておかねばならんですかね。あらためて、どうにかならん?って聞いてみたらシェルスクリプト部分を以下のように変更しろと言われました。

if [ "$#" -gt 0 ]; then
    f="$1"
    new_name=$(osascript -e 'try
        tell application "Finder"
            set item_name to text returned of (display dialog "Enter new name:" default answer "")
        end tell
    on error
        return "cancelled"
    end try')
    
    if [ "$new_name" = "cancelled" ]; then
        exit 0
    fi
    
    dir=$(dirname "$f")
    mv "$f" "$dir/$new_name"
fi

無事動作してますね。素敵です。

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。