Programming Field

Assoc - DOS/Windows コマンド一覧

スポンサーリンク

[Windows NT系?/XP 以降] システム全体のファイルの関連付けを表示・設定します。

※ 設定変更はシステム全体の設定を変更することになるため、管理者権限または同等の権限が必要になる場合があります。
※ ユーザー別の設定を変更するものではないため、Assoc で設定変更しても見かけ上反映されない場合があります。

構文

-- 関連付けの表示
assoc [.ext]
-- 関連付けの設定
assoc .ext=[progid]
.ext
ファイルの拡張子を「.」(ドット)始まりで指定します。「=」を続けない場合、その拡張子に対する関連付けを表示します。
ファイルの拡張子を指定せず「assoc」だけで実行した場合、現在設定されている関連付けがすべて出力されます。
.ext=progid
ファイルの拡張子に「=」をつけた場合は関連付けの設定を行います。progid に ProgID を指定して実行すると、拡張子の関連付けを指定の ProgID に設定します。
「=」をつけつつ progid を指定しなかった(省略した)場合は、ファイルの関連付け設定を削除します。

解説

Assoc はシステム全体に有効なファイルの関連付けの操作を行います。Assoc では拡張子と ProgID を対応させる方式で関連付けを管理します。

ファイルの関連付けは現在のユーザー向けの設定とシステム全体の設定があり、エクスプローラーなどでは両者の設定が混ぜて使用されますが、Assoc ではシステム全体の設定のみを操作します(HKEY_LOCAL_MACHINE\Software\Classes 以下のデータのみを見るようです)。関連付けはユーザー向け設定が優先されるため、Assoc で変更しても反映されない(ように見える)場合があります。

なお、ProgID は Ftype コマンドを使って登録することができます。

[Windows Vista?以降] Assoc は「既定のプログラムの選択」とは無関係です。Assoc を使っても既定のプログラムを変更することはできませんのでご注意ください。

サンプル1

assoc | findstr /R =txtfile$

関連付けとして ProgID 「txtfile」が使用されている拡張子の一覧を表示します。「assoc」単体で実行して表示される拡張子一覧は必ず「.ext=progid」の形式であるため、Findstr で /R オプションを使って「=progid$」とすればほぼ完全一致する関連付けのみを抽出することができます。

サンプル2

for /F "tokens=2 delims==" %A in ('assoc .txt') do assoc ".hoge=%A"

[拡張構文] .txt ファイルの関連付けと同じものを .hoge ファイルに設定します。Forコマンドの拡張構文を使って Assoc の出力を解析し、ProgID 部分を抽出して改めて Assoc の引数として使用しています。