ファイルのコンテキスト メニューでファイルのロック (「読み取り専用」) ステータスを変更できます。
これにはメニュー項目がありません。
このフラグをより迅速に設定、削除、または切り替えるための Finder (コンテキスト) メニュー項目を作成するにはどうすればよいでしょうか?
答え1
それを実現する新しいメニュー項目を作成するには、サービス受け取るファイルとフォルダ入力としてあらゆるアプリケーションAutomator で。
実装オプションは 2 つあります。サービス ワークフローを構築するには、次の 2 つの Automator アクションのいずれかを選択します。
- シェルスクリプトを実行する
- AppleScriptを実行する
以下のコードは、トグル最も複雑なコマンドです。
シェルスクリプトを実行する
このバリアントは、stat
ファイルに設定されているフラグを読み取るために使用します。これらは、 を実行して通常表示される値と同じですls -lO
が、stat
値を読み取るためのより明確なソリューションです。ロックされたフラグ、または にはuchg
値 がある0x2
ため、これがチェック対象です。
chflags
は値を変更するために使用されgrowlnotify
、のオプション部分はうなり声成功またはエラーのメッセージを表示するために使用されます。
シェル スクリプトの実行アクションの一部として、次の bash スクリプト コード スニペットを使用します。
for f in "$@"
do
let "$( stat -f "%f" "$f" ) & 0x2"
if [ $? -ne 0 ] ; then
chflags uchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to lock $f!"
/usr/local/bin/growlnotify "Locked File" -m "$f was locked!"
else
chflags nouchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to unlock $f!"
/usr/local/bin/growlnotify "Unlocked File" -m "$f was unlocked!"
fi
done
入力を受け取るアクションを設定する引数として。
AppleScriptを実行する
「AppleScript を実行」アクションの一部として、次の AppleScript コード スニペットを使用します。
on run {input, parameters}
repeat with f in input
try
tell application "Finder" to set locked of f to (not locked of f)
on error errmsg
tell application "Finder" to display alert errmsg
end try
end repeat
end run
権限がないなどの理由でアクションが失敗した場合は、変更に失敗したファイルごとに 1 つのダイアログが表示されます。