上記のDaniel Beckの回答からピックアップすると、この情報は実際にファイルのリソースフォークに格納されます。Appleは、「Rez」と「DeRez」と呼ばれる2つのユーティリティを開発者ツールとともに提供しており、リソースフォークを操作できます。特に、Rezを使用してリソースフォークをファイルにプッシュできます。
コマンドラインから単一のファイルの関連付けを変更するには、最初に適切なタイプのファイルを作成し、その関連付けを開きたいアプリケーションに手動で変更します。これにより、ファイルにリソースフォークが作成されます。これを行うと、コピーする情報はありません。次に、次のようにDeRezでリソースフォークを引き出します(ファイルfoo.txtで、使用するアプリケーションがFirefox.appであると想定しています)。
DeRez foo.txt > foo.r
これにより、逆コンパイルされたリソースフォークであるfoo.rというファイルがテキストファイルとして作成されます。次のようになります。
data 'usro' (0) {
$"0000 001A 2F41 7070 6C69 6361 7469 6F6E" /* ..../Application */
$"732F 4669 7265 666F 782E 6170 7000 0000" /* s/Firefox.app... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
これを最初から作成したい場合は編集できますが、形式を正確に取得する必要があります。そうしないと機能しません。ゼロで終了する、必要なApp Bundleへのパスを表す16進エンコードされた文字です。
リソースフォークが空で初期化されていないというメッセージが表示される場合があります。その場合は、ソースファイルのファイルごとの関連付けを変更していないため、変更を加えてから、DeRezコマンドを再実行する必要があります。
これを取得したら、次のように別のファイルにプッシュできます(bar.txtが存在すると想定)。
Rez foo.r -a -o bar.txt
これにより、foo.rからのリソースフォークで所定の場所にbar.txtが更新されます。
RezもDeRezもエラーメッセージを出力しないので、問題なく動作することを確認するには、次のようにします。
DeRez bar.txt
以前と同じ情報が表示されます。その後、通常どおりにファイルbar.txtを開くだけで、デフォルトのアプリケーションではなく、正しいアプリケーションで開くはずです。
バッチ変更を行うには、.rファイルを取得したら、次のような標準のワイルドカード展開を使用できます。
Rez foo.r -a -o *.txt
これで、ワイルドカードに一致するすべてのファイルが処理されます。
私は10.7でこれを行いましたが、これは以前のマシンでも動作することを理解しています。