ファイルのコンテキストメニューでファイルロック(「読み取り専用」)ステータスを変更できます。
このためのメニュー項目はありません。
このフラグをよりすばやく設定、削除、または切り替えるためのFinder(コンテキスト)メニュー項目を作成するにはどうすればよいですか?
Automatorの任意のアプリケーションの入力としてファイルとフォルダーを受け取るサービスを作成することにより、それを行う新しいメニュー項目を作成できます。
2つの実装オプションがあります。次の2つのAutomatorアクションのいずれかを選択して、サービスワークフローを構築します。
以下のコードは、最も複雑なため、Toggleコマンドを実装しています。
このバリアントは、stat
を使用してファイルに設定されたフラグを読み取ります。これらは、ls -lO
を実行して通常表示される値と同じですが、stat
は値を読み取るためのよりクリーンなソリューションです。ロックされたフラグ、つまりuchg
の値は0x2
であるため、これを確認しています。
chflags
は値を変更するために使用され、growlnotify
は Growl のオプション部分であり、成功またはエラーメッセージを表示するために使用されます。
シェルスクリプトの実行アクションの一部として、次の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
入力を受け取るようにアクションを構成します引数として。
Run 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つのダイアログが表示されます。