3

プログラミングをするときは、Finder を使ってディレクトリを調べると便利だと思います。以前は、選択したファイルの完全なパスを (OSX v10.8.2 の時点で) Finder にはない機能であるペーストボード (クリップボード) にコピーする簡単な方法が必要であることがよくありました。プログラマーとして、Finder で選択したファイルを右クリックすると表示されるファイル コンテキスト メニューに、単純な Applescript を起動する Automator ワークフローを追加することで、必要な機能を追加しました。

スクリプトはうまく機能します!必要な機能が追加され、使いやすくなっています。ただし、スクリプトに追加したい動作があり、まだその方法を理解できていません。ワークフローを起動する Finder コンテキスト メニュー項目の名前は「ファイル名のコピー」です。ファイルが 1 つしか選択されていない場合は問題ありませんが、複数のファイルが選択されている場合は、名前メニュー項目を「ファイル名のコピー」に変更したいと思います。 "+(選択したファイルの数)+" ファイル名" をコピーします。

私の質問は次のとおりです: Applescript を使用して、選択したファイルの数に基づいて、Finder で選択したファイルを右クリックしたときに表示されるファイル コンテキスト メニューの項目の名前を動的に設定するにはどうすればよいですか?

このタイプの動作には前例があります。Finder で選択したファイルをコピーすると表示されます。1 つのファイルのみが選択されている場合、コンテキスト メニューのコピー メニュー項目はCopy "somefile.txt"と表示されますが、5 つのファイルが選択されている場合、コピー メニュー項目はCopy 5 Itemsと表示されます。

4

1 に答える 1

2

できません。できますが、それは本当にひどいことであり、おそらく努力する価値はありません. メニューに表示される名前は、ワークフロー内の Info.plist ファイルに保存されるため、理論的には、Finder の選択を監視し、そのファイルを適切に調整してから、魔法の関数を呼び出す監視スクリプトを作成できNSUpdateDynamicServices()ます。 AppleScriptObjC が必要です。(または、Finder を強制終了して再起動することもできますが、Finder の選択を変更するたびにそれを行うのは、実用的ではありません。)

興味深い拡張要求は、サービス ワークフローに名前が選択内容を反映するように名前を付ける方法です。そのため、ワークフローに名前を付けて、たとえば「% からパスをコピー」すると、システムは「foo.txt」または「5 アイテム」に置き換えます。またはあなたが自動的に持っているもの。

また、Finder が実際にフル パスをある程度処理することも注目に値します。ファイルをプレーン テキスト ドキュメントにドラッグしてみてください。パスが表示されます。または、ペーストボードの「フリル」フレーバーを認識しているターミナルにコピーして貼り付けてみてください。

于 2013-04-05T01:56:07.013 に答える